Version 3.5.0-105.0.dev

Merge 54031e2752d76a95fa7fa069bf1b41a21260b5e9 into dev
diff --git a/DEPS b/DEPS
index a836689..7e83e9f 100644
--- a/DEPS
+++ b/DEPS
@@ -54,7 +54,7 @@
 
   # co19 is a cipd package automatically generated for each co19 commit.
   # Use tests/co19/update.sh to update this hash.
-  "co19_rev": "140d5faace9c44c95c58ca486389459d2d139b97",
+  "co19_rev": "c18ac1b2cb497b23fcb3c8d04cdab1069cd16e2b",
 
   # The internal benchmarks to use. See go/dart-benchmarks-internal
   "benchmarks_internal_rev": "a7c23b2422492dcc515d1ba4abe3609b50e2a139",
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart
index 4e3f97a..c4cf992 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart
@@ -972,6 +972,9 @@
     }
     return identifier;
   }
+
+  @override
+  bool get allowsNewAsIdentifier => isContinuation;
 }
 
 /// See [IdentifierContext.methodDeclaration],
diff --git a/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart b/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
index 4ed0bd6..f387b61 100644
--- a/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/formal_parameter_builder.dart
@@ -250,13 +250,15 @@
     // and named parameters in several cases:
     // * for const constructors to enable constant evaluation,
     // * for instance methods because these might be needed to generated
-    //   noSuchMethod forwarders, and
+    //   noSuchMethod forwarders,
     // * for generative constructors to support forwarding constructors
-    //   in mixin applications.
+    //   in mixin applications, and
+    // * for factories, to uphold the invariant that optional parameters always
+    //   have default values, even during modular compilation.
     if (parent is ConstructorBuilder) {
       return true;
     } else if (parent is SourceFactoryBuilder) {
-      return parent!.isFactory && parent!.isConst;
+      return parent!.isFactory;
     } else {
       return parent!.isClassInstanceMember;
     }
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 1972962..6504eef 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -927,7 +927,8 @@
       }
 
       ConstantContext savedConstantContext = pop() as ConstantContext;
-      if (expression is! StaticAccessGenerator &&
+      if (!(expression is StaticAccessGenerator &&
+              expression.readTarget is Field) &&
           expression is! VariableUseGenerator &&
           // TODO(johnniwinther): Stop using the type of the generator here.
           // Ask a property instead.
diff --git a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
index 0fc0e29..8d86039 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
@@ -79,7 +79,7 @@
 /// The [declarationConstructor] is the origin constructor and
 /// [implementationConstructor] is the augmentation constructor, if augmented,
 /// otherwise it is the [declarationConstructor].
-void buildConstructorTearOffProcedure(
+DelayedDefaultValueCloner buildConstructorTearOffProcedure(
     {required Procedure tearOff,
     required Member declarationConstructor,
     required Member implementationConstructor,
@@ -118,12 +118,17 @@
 
   List<DartType> typeArguments = freshTypeParameters.freshTypeArguments;
   Substitution substitution = freshTypeParameters.substitution;
-  _createParameters(tearOff, implementationConstructor, function, substitution,
+  DelayedDefaultValueCloner delayedDefaultValueCloner = _createParameters(
+      tearOff,
+      implementationConstructor,
+      function,
+      substitution,
       libraryBuilder);
   Arguments arguments = _createArguments(tearOff, typeArguments, fileOffset);
   _createTearOffBody(tearOff, declarationConstructor, arguments);
   tearOff.function.fileOffset = tearOff.fileOffset;
   tearOff.function.fileEndOffset = tearOff.fileOffset;
+  return delayedDefaultValueCloner;
 }
 
 /// Creates the parameters and body for [tearOff] for a typedef tearoff of
@@ -134,7 +139,7 @@
 /// The [declarationConstructor] is the origin constructor and
 /// [implementationConstructor] is the augmentation constructor, if augmented,
 /// otherwise it is the [declarationConstructor].
-void buildTypedefTearOffProcedure(
+DelayedDefaultValueCloner buildTypedefTearOffProcedure(
     {required Procedure tearOff,
     required Member declarationConstructor,
     required Member implementationConstructor,
@@ -185,7 +190,7 @@
           (int index) => substitution.substituteType(typeArguments[index]));
     }
   }
-  _createParameters(
+  DelayedDefaultValueCloner delayedDefaultValueCloner = _createParameters(
       tearOff,
       implementationConstructor,
       function,
@@ -195,6 +200,7 @@
   _createTearOffBody(tearOff, declarationConstructor, arguments);
   tearOff.function.fileOffset = tearOff.fileOffset;
   tearOff.function.fileEndOffset = tearOff.fileOffset;
+  return delayedDefaultValueCloner;
 }
 
 /// Creates the parameters for the redirecting factory [tearOff] based on the
@@ -207,13 +213,19 @@
 FreshTypeParameters buildRedirectingFactoryTearOffProcedureParameters(
     {required Procedure tearOff,
     required Procedure implementationConstructor,
-    required SourceLibraryBuilder libraryBuilder}) {
+    required SourceLibraryBuilder libraryBuilder,
+    List<DelayedDefaultValueCloner>? delayedDefaultValueCloners}) {
   FunctionNode function = implementationConstructor.function;
   FreshTypeParameters freshTypeParameters =
       _createFreshTypeParameters(function.typeParameters, tearOff.function);
   Substitution substitution = freshTypeParameters.substitution;
-  _createParameters(tearOff, implementationConstructor, function, substitution,
+  DelayedDefaultValueCloner delayedDefaultValueCloner = _createParameters(
+      tearOff,
+      implementationConstructor,
+      function,
+      substitution,
       libraryBuilder);
+  delayedDefaultValueCloners?.add(delayedDefaultValueCloner);
   tearOff.function.fileOffset = tearOff.fileOffset;
   tearOff.function.fileEndOffset = tearOff.fileOffset;
   return freshTypeParameters;
@@ -295,7 +307,7 @@
 /// Creates the parameters for the [tearOff] lowering based of the parameters
 /// in [constructor] and using the [substitution] to compute the parameter and
 /// return types.
-void _createParameters(
+DelayedDefaultValueCloner _createParameters(
     Procedure tearOff,
     Member constructor,
     FunctionNode function,
@@ -326,6 +338,8 @@
       tearOff,
       new TypeDependency(tearOff, constructor, substitution,
           copyReturnType: true));
+  return new DelayedDefaultValueCloner(constructor, tearOff,
+      identicalSignatures: true, libraryBuilder: libraryBuilder);
 }
 
 /// Creates the [Arguments] for passing the parameters from [tearOff] to its
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart
index 7dde01b..cfdbc20 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart
@@ -131,7 +131,9 @@
             VariableDeclaration synthesizedParameter =
                 _synthesized.positionalParameters[superParameterIndex];
             _cloneDefaultValueForSuperParameters(
-                originalParameter, synthesizedParameter, typeEnvironment);
+                originalParameter, synthesizedParameter, typeEnvironment,
+                isOptional:
+                    superParameterIndex >= _synthesized.requiredParameterCount);
           }
         }
       }
@@ -162,7 +164,8 @@
             VariableDeclaration synthesizedParameter =
                 _synthesized.namedParameters[i];
             _cloneDefaultValueForSuperParameters(
-                originalParameter, synthesizedParameter, typeEnvironment);
+                originalParameter, synthesizedParameter, typeEnvironment,
+                isOptional: !synthesizedParameter.isRequired);
           } else {
             // TODO(cstefantsova): Handle the erroneous case of missing names.
           }
@@ -218,7 +221,8 @@
   void _cloneDefaultValueForSuperParameters(
       VariableDeclaration originalParameter,
       VariableDeclaration synthesizedParameter,
-      TypeEnvironment typeEnvironment) {
+      TypeEnvironment typeEnvironment,
+      {required bool isOptional}) {
     Expression? originalParameterInitializer = originalParameter.initializer;
     DartType? originalParameterInitializerType = originalParameterInitializer
         ?.getStaticType(new StaticTypeContext(synthesized, typeEnvironment));
@@ -227,6 +231,9 @@
         typeEnvironment.isSubtypeOf(originalParameterInitializerType,
             synthesizedParameterType, SubtypeCheckMode.withNullabilities)) {
       _cloneInitializer(originalParameter, synthesizedParameter);
+    } else if (originalParameterInitializer == null && isOptional) {
+      synthesizedParameter.initializer = new NullLiteral()
+        ..parent = synthesizedParameter;
     } else {
       synthesizedParameter.hasDeclaredInitializer = false;
       if (synthesizedParameterType.isPotentiallyNonNullable) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index bca1f84..9269594 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -530,7 +530,11 @@
       loader.computeShowHideElements();
 
       benchmarker?.enterPhase(BenchmarkPhases.outline_installTypedefTearOffs);
-      loader.installTypedefTearOffs();
+      List<DelayedDefaultValueCloner>?
+          typedefTearOffsDelayedDefaultValueCloners =
+          loader.installTypedefTearOffs();
+      typedefTearOffsDelayedDefaultValueCloners
+          ?.forEach(registerDelayedDefaultValueCloner);
 
       benchmarker
           ?.enterPhase(BenchmarkPhases.outline_computeFieldPromotability);
@@ -1123,12 +1127,15 @@
         forAbstractClassOrEnumOrMixin: classBuilder.isAbstract);
 
     if (constructorTearOff != null) {
-      buildConstructorTearOffProcedure(
-          tearOff: constructorTearOff,
-          declarationConstructor: constructor,
-          implementationConstructor: constructor,
-          enclosingDeclarationTypeParameters: classBuilder.cls.typeParameters,
-          libraryBuilder: libraryBuilder);
+      DelayedDefaultValueCloner delayedDefaultValueCloner =
+          buildConstructorTearOffProcedure(
+              tearOff: constructorTearOff,
+              declarationConstructor: constructor,
+              implementationConstructor: constructor,
+              enclosingDeclarationTypeParameters:
+                  classBuilder.cls.typeParameters,
+              libraryBuilder: libraryBuilder);
+      registerDelayedDefaultValueCloner(delayedDefaultValueCloner);
     }
     SyntheticSourceConstructorBuilder constructorBuilder =
         new SyntheticSourceConstructorBuilder(
@@ -1147,9 +1154,10 @@
   }
 
   void registerDelayedDefaultValueCloner(DelayedDefaultValueCloner cloner) {
-    assert(!_delayedDefaultValueCloners.containsKey(cloner.synthesized),
-        "Default cloner already registered for ${cloner.synthesized}.");
-    _delayedDefaultValueCloners[cloner.synthesized] = cloner;
+    // TODO(cstefantsova): Investigate the reason for the assumption breakage
+    // and uncomment the following line.
+    // assert(!_delayedDefaultValueCloners.containsKey(cloner.synthesized));
+    _delayedDefaultValueCloners[cloner.synthesized] ??= cloner;
   }
 
   void finishSynthesizedParameters({bool forOutline = false}) {
@@ -1202,12 +1210,15 @@
         forAbstractClassOrEnumOrMixin:
             enclosingClass.isAbstract || enclosingClass.isEnum);
     if (constructorTearOff != null) {
-      buildConstructorTearOffProcedure(
-          tearOff: constructorTearOff,
-          declarationConstructor: constructor,
-          implementationConstructor: constructor,
-          enclosingDeclarationTypeParameters: classBuilder.cls.typeParameters,
-          libraryBuilder: libraryBuilder);
+      DelayedDefaultValueCloner delayedDefaultValueCloner =
+          buildConstructorTearOffProcedure(
+              tearOff: constructorTearOff,
+              declarationConstructor: constructor,
+              implementationConstructor: constructor,
+              enclosingDeclarationTypeParameters:
+                  classBuilder.cls.typeParameters,
+              libraryBuilder: libraryBuilder);
+      registerDelayedDefaultValueCloner(delayedDefaultValueCloner);
     }
     return new SyntheticSourceConstructorBuilder(
         classBuilder, constructor, constructorTearOff);
diff --git a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
index 7fdd715..11a823d 100644
--- a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
@@ -544,12 +544,15 @@
       _constructor.isExternal = isExternal;
 
       if (_constructorTearOff != null) {
-        buildConstructorTearOffProcedure(
-            tearOff: _constructorTearOff,
-            declarationConstructor: constructor,
-            implementationConstructor: _constructor,
-            enclosingDeclarationTypeParameters: classBuilder.cls.typeParameters,
-            libraryBuilder: libraryBuilder);
+        DelayedDefaultValueCloner delayedDefaultValueCloners =
+            buildConstructorTearOffProcedure(
+                tearOff: _constructorTearOff,
+                declarationConstructor: constructor,
+                implementationConstructor: _constructor,
+                enclosingDeclarationTypeParameters:
+                    classBuilder.cls.typeParameters,
+                libraryBuilder: libraryBuilder);
+        _delayedDefaultValueCloners.add(delayedDefaultValueCloners);
       }
 
       _hasBeenBuilt = true;
@@ -616,7 +619,7 @@
 
   final bool _hasSuperInitializingFormals;
 
-  final List<DelayedDefaultValueCloner> _superParameterDefaultValueCloners =
+  final List<DelayedDefaultValueCloner> _delayedDefaultValueCloners =
       <DelayedDefaultValueCloner>[];
 
   @override
@@ -634,7 +637,7 @@
             doFinishConstructor: false);
       }
       finalizeSuperInitializingFormals(
-          hierarchy, _superParameterDefaultValueCloners, initializers);
+          hierarchy, _delayedDefaultValueCloners, initializers);
     }
   }
 
@@ -824,8 +827,8 @@
           .addSuperParameterDefaultValueCloners(delayedDefaultValueCloners);
     }
 
-    delayedDefaultValueCloners.addAll(_superParameterDefaultValueCloners);
-    _superParameterDefaultValueCloners.clear();
+    delayedDefaultValueCloners.addAll(_delayedDefaultValueCloners);
+    _delayedDefaultValueCloners.clear();
   }
 
   @override
@@ -1085,6 +1088,8 @@
 
   final MemberName _memberName;
 
+  DelayedDefaultValueCloner? _delayedDefaultValueCloner;
+
   SourceExtensionTypeConstructorBuilder(
       List<MetadataBuilder>? metadata,
       int modifiers,
@@ -1194,6 +1199,10 @@
       _buildBody();
     }
     beginInitializers = null;
+
+    if (_delayedDefaultValueCloner != null) {
+      delayedDefaultValueCloners.add(_delayedDefaultValueCloner!);
+    }
   }
 
   bool _hasBuiltBody = false;
@@ -1268,7 +1277,7 @@
       _constructor.isExtensionTypeMember = true;
 
       if (_constructorTearOff != null) {
-        buildConstructorTearOffProcedure(
+        _delayedDefaultValueCloner = buildConstructorTearOffProcedure(
             tearOff: _constructorTearOff,
             declarationConstructor: _constructor,
             implementationConstructor: _constructor,
diff --git a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
index 6f1c983..47de292 100644
--- a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
@@ -64,6 +64,8 @@
 
   final MemberName _memberName;
 
+  DelayedDefaultValueCloner? _delayedDefaultValueCloner;
+
   SourceFactoryBuilder(
       List<MetadataBuilder>? metadata,
       int modifiers,
@@ -185,7 +187,7 @@
     _procedureInternal.isStatic = isStatic;
 
     if (_factoryTearOff != null) {
-      buildConstructorTearOffProcedure(
+      _delayedDefaultValueCloner = buildConstructorTearOffProcedure(
           tearOff: _factoryTearOff,
           declarationConstructor: _procedure,
           implementationConstructor: _procedureInternal,
@@ -201,6 +203,9 @@
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     if (_hasBuiltOutlines) return;
+    if (_delayedDefaultValueCloner != null) {
+      delayedDefaultValueCloners.add(_delayedDefaultValueCloner!);
+    }
     super.buildOutlineExpressions(
         classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     _hasBuiltOutlines = true;
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index ebc51bd..311d991 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -5489,25 +5489,39 @@
     }
   }
 
-  void installTypedefTearOffs() {
+  List<DelayedDefaultValueCloner>? installTypedefTearOffs() {
+    List<DelayedDefaultValueCloner>? delayedDefaultValueCloners;
+
     Iterable<SourceLibraryBuilder>? augmentationLibraries =
         this.augmentationLibraries;
     if (augmentationLibraries != null) {
       for (SourceLibraryBuilder augmentationLibrary in augmentationLibraries) {
-        augmentationLibrary.installTypedefTearOffs();
+        List<DelayedDefaultValueCloner>?
+            augmentationLibraryDelayedDefaultValueCloners =
+            augmentationLibrary.installTypedefTearOffs();
+        if (augmentationLibraryDelayedDefaultValueCloners != null) {
+          (delayedDefaultValueCloners ??= [])
+              .addAll(augmentationLibraryDelayedDefaultValueCloners);
+        }
       }
     }
 
     Iterator<SourceTypeAliasBuilder> iterator = localMembersIteratorOfType();
     while (iterator.moveNext()) {
       SourceTypeAliasBuilder declaration = iterator.current;
-      declaration.buildTypedefTearOffs(this, (Procedure procedure) {
+      DelayedDefaultValueCloner? delayedDefaultValueCloner =
+          declaration.buildTypedefTearOffs(this, (Procedure procedure) {
         procedure.isStatic = true;
         if (!declaration.isAugmenting && !declaration.isDuplicate) {
           library.addProcedure(procedure);
         }
       });
+      if (delayedDefaultValueCloner != null) {
+        (delayedDefaultValueCloners ??= []).add(delayedDefaultValueCloner);
+      }
     }
+
+    return delayedDefaultValueCloners;
   }
 }
 
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index 4d33f61..3c7a128 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -1779,12 +1779,19 @@
     ticker.logMs("Resolved $count constructors");
   }
 
-  void installTypedefTearOffs() {
+  List<DelayedDefaultValueCloner>? installTypedefTearOffs() {
+    List<DelayedDefaultValueCloner>? delayedDefaultValueCloners;
     if (target.backendTarget.isTypedefTearOffLoweringEnabled) {
       for (SourceLibraryBuilder library in sourceLibraryBuilders) {
-        library.installTypedefTearOffs();
+        List<DelayedDefaultValueCloner>? libraryDelayedDefaultValueCloners =
+            library.installTypedefTearOffs();
+        if (libraryDelayedDefaultValueCloners != null) {
+          (delayedDefaultValueCloners ??= [])
+              .addAll(libraryDelayedDefaultValueCloners);
+        }
       }
     }
+    return delayedDefaultValueCloners;
   }
 
   void finishTypeVariables(Iterable<SourceLibraryBuilder> libraryBuilders,
diff --git a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
index 5e7b378..8902880 100644
--- a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
@@ -410,7 +410,8 @@
       VariableDeclaration newParameter = new VariableDeclaration(parameter.name,
           type: type,
           isFinal: parameter.isFinal,
-          isLowered: parameter.isLowered)
+          isLowered: parameter.isLowered,
+          isRequired: parameter.isRequired)
         ..fileOffset = parameter.fileOffset;
       _extensionTearOffParameterMap![parameter] = newParameter;
       return newParameter;
diff --git a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
index c9b5e46..e3a850e 100644
--- a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
@@ -359,10 +359,11 @@
 
   Map<Procedure, Member>? _tearOffDependencies;
 
-  void buildTypedefTearOffs(
+  DelayedDefaultValueCloner? buildTypedefTearOffs(
       SourceLibraryBuilder libraryBuilder, void Function(Procedure) f) {
     TypeDeclarationBuilder? declaration = unaliasDeclaration(null);
     DartType? targetType = typedef.type;
+    DelayedDefaultValueCloner? delayedDefaultValueCloner;
     switch (declaration) {
       case ClassBuilder():
         if (targetType is InterfaceType &&
@@ -408,7 +409,7 @@
                       tearOffReference);
               _tearOffDependencies![tearOff] = target;
 
-              buildTypedefTearOffProcedure(
+              delayedDefaultValueCloner = buildTypedefTearOffProcedure(
                   tearOff: tearOff,
                   declarationConstructor: target,
                   // TODO(johnniwinther): Handle augmented constructors.
@@ -461,7 +462,7 @@
                       tearOffReference);
               _tearOffDependencies![tearOff] = target;
 
-              buildTypedefTearOffProcedure(
+              delayedDefaultValueCloner = buildTypedefTearOffProcedure(
                   tearOff: tearOff,
                   declarationConstructor: target,
                   // TODO(johnniwinther): Handle augmented constructors.
@@ -485,5 +486,7 @@
       case OmittedTypeDeclarationBuilder():
       case null:
     }
+
+    return delayedDefaultValueCloner;
   }
 }
diff --git a/pkg/front_end/test/spell_checking_list_common.txt b/pkg/front_end/test/spell_checking_list_common.txt
index 39f071d..b21cac4 100644
--- a/pkg/front_end/test/spell_checking_list_common.txt
+++ b/pkg/front_end/test/spell_checking_list_common.txt
@@ -339,6 +339,7 @@
 branched
 branches
 break
+breakage
 breaking
 breakpoint
 breaks
@@ -3342,6 +3343,7 @@
 updaters
 updates
 updating
+uphold
 upon
 upper
 uppercase
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect
index fee8235..46f47cc 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off.dart.weak.outline.expect
@@ -39,7 +39,7 @@
     ;
   static method _#_#tearOff([core::int? field]) → self::Class4
     return new self::Class4::_(field);
-  static factory •([core::int? field]) → self::Class4
+  static factory •([core::int? field = null]) → self::Class4
     ;
   static method _#new#tearOff([core::int? field]) → self::Class4
     return self::Class4::•(field);
@@ -51,7 +51,7 @@
     ;
   static method _#_#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::_(field1, field2);
-  static factory •(core::int field1, [core::int? field2]) → self::Class5
+  static factory •(core::int field1, [core::int? field2 = null]) → self::Class5
     ;
   static method _#new#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return self::Class5::•(field1, field2);
@@ -64,7 +64,7 @@
     ;
   static method _#_#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::_(field1, field2: field2, field3: field3);
-  static factory •(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
+  static factory •(core::int field1, {core::int? field2 = null, required core::int field3}) → self::Class6
     ;
   static method _#new#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return self::Class6::•(field1, field2: field2, field3: field3);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off_default_values.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off_default_values.dart.weak.outline.expect
index 41c5082..2dab0be 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off_default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/factory_tear_off_default_values.dart.weak.outline.expect
@@ -8,7 +8,7 @@
     ;
   static method _#_#tearOff(core::int field) → self::Class1
     return new self::Class1::_(field);
-  static factory •([has-declared-initializer core::int field]) → self::Class1
+  static factory •([core::int field = 42]) → self::Class1
     ;
   static method _#new#tearOff([has-declared-initializer core::int field]) → self::Class1
     return self::Class1::•(field);
@@ -19,7 +19,7 @@
     ;
   static method _#_#tearOff(core::int field) → self::Class2
     return new self::Class2::_(field);
-  static factory •({has-declared-initializer core::int field}) → self::Class2
+  static factory •({core::int field = 42}) → self::Class2
     ;
   static method _#new#tearOff({has-declared-initializer core::int field}) → self::Class2
     return self::Class2::•(field: field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.outline.expect
index 4e1e1d3..85d0288 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart.weak.outline.expect
@@ -61,7 +61,7 @@
  - 'Link' is from 'pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart'.
   factory Link.create3(int i) = LinkFactory.create;
                                 ^";
-  static factory create4<T extends core::Object? = dynamic>({core::int i}) → self::Link<self::Link::create4::T%>
+  static factory create4<T extends core::Object? = dynamic>({core::int i = null}) → self::Link<self::Link::create4::T%>
     return invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart:9:35: Error: The constructor function type 'LinkFactory Function()' isn't a subtype of 'Link<T> Function({int i})'.
  - 'LinkFactory' is from 'pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart'.
  - 'Link' is from 'pkg/front_end/testcases/constructor_tearoffs/lowering/invalid_redirect.dart'.
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue52763.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue52763.dart.weak.outline.expect
index ea90d14..031af54 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/issue52763.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/issue52763.dart.weak.outline.expect
@@ -34,14 +34,14 @@
   const constructor •(core::int c, {core::bool a = true, core::bool b = false}) → self::P1
     : self::P1::c = c, super self::C::•(a: a, b: b)
     ;
-  static method _#new#tearOff(core::int c, {core::bool a = true, core::bool b = false}) → self::P1
+  static method _#new#tearOff(core::int c, {has-declared-initializer core::bool a, has-declared-initializer core::bool b}) → self::P1
     return new self::P1::•(c, a: a, b: b);
 }
 class P2 extends self::C /*hasConstConstructor*/  {
   const constructor •({core::bool b = false, core::bool a = true}) → self::P2
     : super self::C::•(b: b, a: a)
     ;
-  static method _#new#tearOff({core::bool b = false, core::bool a = true}) → self::P2
+  static method _#new#tearOff({has-declared-initializer core::bool b, has-declared-initializer core::bool a}) → self::P2
     return new self::P2::•(b: b, a: a);
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect
index 30d39f4..c5ef007 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.expect
@@ -77,7 +77,7 @@
   synthetic constructor redirectingGenerative(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
     : super self::Class::redirectingGenerative(field)
     ;
-  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([has-declared-initializer core::int field]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
+  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
     return new self::NamedMixinApplication::•<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>(field);
   static method _#named#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>
     return new self::NamedMixinApplication::named<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>(field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect
index ab2d842..21724e2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.strong.transformed.expect
@@ -77,7 +77,7 @@
   synthetic constructor redirectingGenerative(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
     : super self::Class::redirectingGenerative(field)
     ;
-  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([has-declared-initializer core::int field]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
+  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
     return new self::NamedMixinApplication::•<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>(field);
   static method _#named#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>
     return new self::NamedMixinApplication::named<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>(field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect
index 18fb1bd..5aa3ab3 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.expect
@@ -77,7 +77,7 @@
   synthetic constructor redirectingGenerative(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
     : super self::Class::redirectingGenerative(field)
     ;
-  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([has-declared-initializer core::int field]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
+  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
     return new self::NamedMixinApplication::•<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>(field);
   static method _#named#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>
     return new self::NamedMixinApplication::named<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>(field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.modular.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.modular.expect
index 18fb1bd..5aa3ab3 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.modular.expect
@@ -77,7 +77,7 @@
   synthetic constructor redirectingGenerative(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
     : super self::Class::redirectingGenerative(field)
     ;
-  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([has-declared-initializer core::int field]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
+  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
     return new self::NamedMixinApplication::•<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>(field);
   static method _#named#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>
     return new self::NamedMixinApplication::named<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>(field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect
index 95eef55..842b802d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/named_mixin_application.dart.weak.transformed.expect
@@ -77,7 +77,7 @@
   synthetic constructor redirectingGenerative(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::T%, self::NamedMixinApplication::S%>
     : super self::Class::redirectingGenerative(field)
     ;
-  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([has-declared-initializer core::int field]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
+  static method _#new#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>([core::int field = #C1]) → self::NamedMixinApplication<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>
     return new self::NamedMixinApplication::•<self::NamedMixinApplication::_#new#tearOff::T%, self::NamedMixinApplication::_#new#tearOff::S%>(field);
   static method _#named#tearOff<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(core::int field) → self::NamedMixinApplication<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>
     return new self::NamedMixinApplication::named<self::NamedMixinApplication::_#named#tearOff::T%, self::NamedMixinApplication::_#named#tearOff::S%>(field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
index d7bca17..31bffd2 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart.weak.outline.expect
@@ -43,7 +43,7 @@
     ;
   static method _#_#tearOff([core::int? field]) → self::Class4
     return new self::Class4::_(field);
-  static factory •([core::int? field]) → self::Class4 /* redirection-target: self::Class4::_ */
+  static factory •([core::int? field = null]) → self::Class4 /* redirection-target: self::Class4::_ */
     return new self::Class4::_(field);
   static method _#new#tearOff([core::int? field]) → self::Class4
     return new self::Class4::_(field);
@@ -55,7 +55,7 @@
     ;
   static method _#_#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::_(field1, field2);
-  static factory •(core::int field1, [core::int? field2]) → self::Class5 /* redirection-target: self::Class5::_ */
+  static factory •(core::int field1, [core::int? field2 = null]) → self::Class5 /* redirection-target: self::Class5::_ */
     return new self::Class5::_(field1, field2);
   static method _#new#tearOff(core::int field1, [core::int? field2]) → self::Class5
     return new self::Class5::_(field1, field2);
@@ -68,7 +68,7 @@
     ;
   static method _#_#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::_(field1, field2: field2, field3: field3);
-  static factory •(core::int field1, {core::int? field2, required core::int field3}) → self::Class6 /* redirection-target: self::Class6::_ */
+  static factory •(core::int field1, {core::int? field2 = null, required core::int field3}) → self::Class6 /* redirection-target: self::Class6::_ */
     return new self::Class6::_(field1, field2: field2, field3: field3);
   static method _#new#tearOff(core::int field1, {core::int? field2, required core::int field3}) → self::Class6
     return new self::Class6::_(field1, field2: field2, field3: field3);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect
index a20154a..1d28aec 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values.dart.weak.outline.expect
@@ -8,7 +8,7 @@
     ;
   static method _#_#tearOff([has-declared-initializer core::int field]) → self::Class1
     return new self::Class1::_(field);
-  static factory •([core::int field]) → self::Class1 /* redirection-target: self::Class1::_ */
+  static factory •([core::int field = null]) → self::Class1 /* redirection-target: self::Class1::_ */
     return new self::Class1::_(field);
   static method _#new#tearOff([core::int field]) → self::Class1
     return new self::Class1::_(field);
@@ -19,7 +19,7 @@
     ;
   static method _#_#tearOff({has-declared-initializer core::int field}) → self::Class2
     return new self::Class2::_(field: field);
-  static factory •({core::int field}) → self::Class2 /* redirection-target: self::Class2::_ */
+  static factory •({core::int field = null}) → self::Class2 /* redirection-target: self::Class2::_ */
     return new self::Class2::_(field: field);
   static method _#new#tearOff({core::int field}) → self::Class2
     return new self::Class2::_(field: field);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect
index 2041713..340ac0c 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off_default_values_complex.dart.weak.outline.expect
@@ -11,11 +11,11 @@
     ;
   static method _#positional#tearOff([has-declared-initializer core::int field1, has-declared-initializer core::int field2]) → self::Class1
     return new self::Class1::positional(field1, field2);
-  static factory redirectPositionalSame([core::int field1, core::int field2]) → self::Class1 /* redirection-target: self::Class1::positional */
+  static factory redirectPositionalSame([core::int field1 = null, core::int field2 = null]) → self::Class1 /* redirection-target: self::Class1::positional */
     return new self::Class1::positional(field1, field2);
   static method _#redirectPositionalSame#tearOff([core::int field1, core::int field2]) → self::Class1
     return new self::Class1::positional(field1, field2);
-  static factory redirectPositionalFewer1([core::int field1]) → self::Class1 /* redirection-target: self::Class1::positional */
+  static factory redirectPositionalFewer1([core::int field1 = null]) → self::Class1 /* redirection-target: self::Class1::positional */
     return new self::Class1::positional(field1);
   static method _#redirectPositionalFewer1#tearOff([core::int field1]) → self::Class1
     return new self::Class1::positional(field1);
@@ -25,19 +25,19 @@
     return new self::Class1::positional();
   static method _#named#tearOff({has-declared-initializer core::int field1, has-declared-initializer core::int field2}) → self::Class1
     return new self::Class1::named(field1: field1, field2: field2);
-  static factory redirectNamedSame({core::int field1, core::int field2}) → self::Class1 /* redirection-target: self::Class1::named */
+  static factory redirectNamedSame({core::int field1 = null, core::int field2 = null}) → self::Class1 /* redirection-target: self::Class1::named */
     return new self::Class1::named(field1: field1, field2: field2);
   static method _#redirectNamedSame#tearOff({core::int field1, core::int field2}) → self::Class1
     return new self::Class1::named(field1: field1, field2: field2);
-  static factory redirectNamedReorder({core::int field2, core::int field1}) → self::Class1 /* redirection-target: self::Class1::named */
+  static factory redirectNamedReorder({core::int field2 = null, core::int field1 = null}) → self::Class1 /* redirection-target: self::Class1::named */
     return new self::Class1::named(field2: field2, field1: field1);
   static method _#redirectNamedReorder#tearOff({core::int field2, core::int field1}) → self::Class1
     return new self::Class1::named(field2: field2, field1: field1);
-  static factory redirectNamedFewer1({core::int field1}) → self::Class1 /* redirection-target: self::Class1::named */
+  static factory redirectNamedFewer1({core::int field1 = null}) → self::Class1 /* redirection-target: self::Class1::named */
     return new self::Class1::named(field1: field1);
   static method _#redirectNamedFewer1#tearOff({core::int field1}) → self::Class1
     return new self::Class1::named(field1: field1);
-  static factory redirectNamedFewer2({core::int field2}) → self::Class1 /* redirection-target: self::Class1::named */
+  static factory redirectNamedFewer2({core::int field2 = null}) → self::Class1 /* redirection-target: self::Class1::named */
     return new self::Class1::named(field2: field2);
   static method _#redirectNamedFewer2#tearOff({core::int field2}) → self::Class1
     return new self::Class1::named(field2: field2);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
index 5a82591..2a2ef26 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from.dart.weak.outline.expect
@@ -15,7 +15,7 @@
     return new self::Class::•<self::Class::_#new#tearOff::S%, self::Class::_#new#tearOff::T%>(a, b);
   static method _#named#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#named#tearOff::S% a, [self::Class::_#named#tearOff::T? b, has-declared-initializer core::int c]) → self::Class<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>
     return new self::Class::named<self::Class::_#named#tearOff::S%, self::Class::_#named#tearOff::T%>(a, b, c);
-  static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b, has-declared-initializer core::int c}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
+  static factory fact<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::fact::S% a, {self::Class::fact::T? b = null, core::int c = 42}) → self::Class<self::Class::fact::S%, self::Class::fact::T%>
     ;
   static method _#fact#tearOff<S extends core::Object? = dynamic, T extends core::Object? = dynamic>(self::Class::_#fact#tearOff::S% a, {self::Class::_#fact#tearOff::T? b, has-declared-initializer core::int c}) → self::Class<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>
     return self::Class::fact<self::Class::_#fact#tearOff::S%, self::Class::_#fact#tearOff::T%>(a, b: b, c: c);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect
index ce73e4a..ada4fe9 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.modular.expect
@@ -68,7 +68,7 @@
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
-static method /* from org-dartlang-testcase:///main_lib.dart */ _#H#fact#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(self::_#H#fact#tearOff::Y% a, {core::int? b, has-declared-initializer core::int c}) → mai::A<self::_#H#fact#tearOff::Y%>
+static method /* from org-dartlang-testcase:///main_lib.dart */ _#H#fact#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>(self::_#H#fact#tearOff::Y% a, {core::int? b = #C9, core::int c = #C10}) → mai::A<self::_#H#fact#tearOff::Y%>
   return mai::A::fact<self::_#H#fact#tearOff::Y%>(a, b: b, c: c);
 static method /* from org-dartlang-testcase:///main_lib.dart */ _#H#redirect#tearOff<unrelated X extends core::Object? = dynamic, Y extends core::Object? = dynamic>() → mai::A<self::_#H#redirect#tearOff::Y%>
   return mai::A::_#redirect#tearOff<self::_#H#redirect#tearOff::Y%>();
@@ -87,4 +87,5 @@
   #C7 = static-tearoff mai::_#F#fact#tearOff
   #C8 = static-tearoff mai::_#F#redirect#tearOff
   #C9 = null
+  #C10 = 42
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
index 7228e14..7572dc5 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart.weak.outline.expect
@@ -42,7 +42,7 @@
     return new mai::A::•<mai::A::_#new#tearOff::T%>();
   static method _#named#tearOff<T extends core::Object? = dynamic>(mai::A::_#named#tearOff::T% a, [core::int? b]) → mai::A<mai::A::_#named#tearOff::T%>
     return new mai::A::named<mai::A::_#named#tearOff::T%>(a, b);
-  static factory fact<T extends core::Object? = dynamic>(mai::A::fact::T% a, {core::int? b, has-declared-initializer core::int c}) → mai::A<mai::A::fact::T%>
+  static factory fact<T extends core::Object? = dynamic>(mai::A::fact::T% a, {core::int? b = #C1, core::int c = #C2}) → mai::A<mai::A::fact::T%>
     ;
   static method _#fact#tearOff<T extends core::Object? = dynamic>(mai::A::_#fact#tearOff::T% a, {core::int? b, has-declared-initializer core::int c}) → mai::A<mai::A::_#fact#tearOff::T%>
     return mai::A::fact<mai::A::_#fact#tearOff::T%>(a, b: b, c: c);
@@ -78,4 +78,5 @@
 
 constants  {
   #C1 = null
+  #C2 = 42
 }
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
index 1481c06..997ef74 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_identical.dart.weak.outline.expect
@@ -42,7 +42,7 @@
     return new typ::A::•<typ::A::_#new#tearOff::T%>();
   static method _#named#tearOff<T extends core::Object? = dynamic>(typ::A::_#named#tearOff::T% a, [core::int? b]) → typ::A<typ::A::_#named#tearOff::T%>
     return new typ::A::named<typ::A::_#named#tearOff::T%>(a, b);
-  static factory fact<T extends core::Object? = dynamic>(typ::A::fact::T% a, {core::int? b, has-declared-initializer core::int c}) → typ::A<typ::A::fact::T%>
+  static factory fact<T extends core::Object? = dynamic>(typ::A::fact::T% a, {core::int? b = null, core::int c = 42}) → typ::A<typ::A::fact::T%>
     ;
   static method _#fact#tearOff<T extends core::Object? = dynamic>(typ::A::_#fact#tearOff::T% a, {core::int? b, has-declared-initializer core::int c}) → typ::A<typ::A::_#fact#tearOff::T%>
     return typ::A::fact<typ::A::_#fact#tearOff::T%>(a, b: b, c: c);
diff --git a/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.strong.transformed.expect
index 410d41e..5ffbf9b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.strong.transformed.expect
@@ -235,9 +235,9 @@
   self::new;
   self::E|call<dynamic>(self::new);
   self::E|call<core::int>(self::new);
-  let final core::Object* #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
-  let final core::Object* #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
-  let final core::Object* #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
+  let final core::Object? #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
   self::E|get#new(0);
   self::E|call<dynamic>(self::E|get#new(0));
   self::E|call<core::int>(self::E|get#new(0));
diff --git a/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.weak.transformed.expect
index 410d41e..5ffbf9b 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart.weak.transformed.expect
@@ -235,9 +235,9 @@
   self::new;
   self::E|call<dynamic>(self::new);
   self::E|call<core::int>(self::new);
-  let final core::Object* #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
-  let final core::Object* #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
-  let final core::Object* #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
+  let final core::Object? #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
   self::E|get#new(0);
   self::E|call<dynamic>(self::E|get#new(0));
   self::E|call<core::int>(self::E|get#new(0));
diff --git a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
index e4781f1..9f57ebd 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart.weak.outline.expect
@@ -27,7 +27,7 @@
   final field core::int? field;
   constructor _([core::int? field = null]) → self::Class4
     ;
-  static factory •([core::int? field]) → self::Class4 /* redirection-target: self::Class4::_ */
+  static factory •([core::int? field = null]) → self::Class4 /* redirection-target: self::Class4::_ */
     return new self::Class4::_(field);
 }
 class Class5 extends core::Object {
@@ -35,7 +35,7 @@
   final field core::int? field2;
   constructor _(core::int field1, [core::int? field2 = null]) → self::Class5
     ;
-  static factory •(core::int field1, [core::int? field2]) → self::Class5 /* redirection-target: self::Class5::_ */
+  static factory •(core::int field1, [core::int? field2 = null]) → self::Class5 /* redirection-target: self::Class5::_ */
     return new self::Class5::_(field1, field2);
 }
 class Class6 extends core::Object {
@@ -44,7 +44,7 @@
   final field core::int field3;
   constructor _(core::int field1, {core::int? field2 = null, required core::int field3}) → self::Class6
     ;
-  static factory •(core::int field1, {core::int? field2, required core::int field3}) → self::Class6 /* redirection-target: self::Class6::_ */
+  static factory •(core::int field1, {core::int? field2 = null, required core::int field3}) → self::Class6 /* redirection-target: self::Class6::_ */
     return new self::Class6::_(field1, field2: field2, field3: field3);
 }
 class Class7a extends core::Object implements self::Class7b {
diff --git a/pkg/front_end/testcases/dart2js/issue52763.dart.weak.outline.expect b/pkg/front_end/testcases/dart2js/issue52763.dart.weak.outline.expect
index ea90d14..031af54 100644
--- a/pkg/front_end/testcases/dart2js/issue52763.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/dart2js/issue52763.dart.weak.outline.expect
@@ -34,14 +34,14 @@
   const constructor •(core::int c, {core::bool a = true, core::bool b = false}) → self::P1
     : self::P1::c = c, super self::C::•(a: a, b: b)
     ;
-  static method _#new#tearOff(core::int c, {core::bool a = true, core::bool b = false}) → self::P1
+  static method _#new#tearOff(core::int c, {has-declared-initializer core::bool a, has-declared-initializer core::bool b}) → self::P1
     return new self::P1::•(c, a: a, b: b);
 }
 class P2 extends self::C /*hasConstConstructor*/  {
   const constructor •({core::bool b = false, core::bool a = true}) → self::P2
     : super self::C::•(b: b, a: a)
     ;
-  static method _#new#tearOff({core::bool b = false, core::bool a = true}) → self::P2
+  static method _#new#tearOff({has-declared-initializer core::bool b, has-declared-initializer core::bool a}) → self::P2
     return new self::P2::•(b: b, a: a);
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/dart2js/issue53804.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2js/issue53804.dart.strong.transformed.expect
index 52b006d..69d0593 100644
--- a/pkg/front_end/testcases/dart2js/issue53804.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/dart2js/issue53804.dart.strong.transformed.expect
@@ -24,21 +24,21 @@
         {
           final hoisted core::int? f1;
           if(true) {
-            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
+            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
             #t1 = "${f1}";
             break #L1;
           }
         }
         {
           final hoisted core::double? f2;
-          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
-            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
+          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
+            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
             #t1 = "${f2}";
             break #L1;
           }
         }
         {
-          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
+          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
             #t1 = "?";
             break #L1;
           }
diff --git a/pkg/front_end/testcases/dart2js/issue53804.dart.weak.transformed.expect b/pkg/front_end/testcases/dart2js/issue53804.dart.weak.transformed.expect
index 0206006..87c01a0 100644
--- a/pkg/front_end/testcases/dart2js/issue53804.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/dart2js/issue53804.dart.weak.transformed.expect
@@ -25,21 +25,21 @@
         {
           final hoisted core::int? f1;
           if(true) {
-            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
+            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
             #t1 = "${f1}";
             break #L1;
           }
         }
         {
           final hoisted core::double? f2;
-          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
-            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
+          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
+            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
             #t1 = "${f2}";
             break #L1;
           }
         }
         {
-          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
+          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
             #t1 = "?";
             break #L1;
           }
diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect
index c4e0928..274ff60 100644
--- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect
+++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.expect
@@ -73,9 +73,9 @@
   return new test::Class::•<test::_#Alias#new#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#Alias#fact#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#fact#tearOff::T value}) → test::Class<test::_#Alias#fact#tearOff::T>
   return test::Class::fact<test::_#Alias#fact#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
+static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
   return test::Class::_#redirect#tearOff<test::_#Alias#redirect#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
+static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
   return test::Class::_#redirect2#tearOff<test::_#Alias#redirect2#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#AliasImpl#new#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#AliasImpl#new#tearOff::T value}) → test::ClassImpl<test::_#AliasImpl#new#tearOff::T>
   return new test::ClassImpl::•<test::_#AliasImpl#new#tearOff::T>(defaultValue: defaultValue, value: value);
diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.transformed.expect
index f76c662..7d14635 100644
--- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.strong.transformed.expect
@@ -73,9 +73,9 @@
   return new test::Class::•<test::_#Alias#new#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#Alias#fact#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#fact#tearOff::T value}) → test::Class<test::_#Alias#fact#tearOff::T>
   return test::Class::fact<test::_#Alias#fact#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
+static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
   return test::Class::_#redirect#tearOff<test::_#Alias#redirect#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
+static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
   return test::Class::_#redirect2#tearOff<test::_#Alias#redirect2#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#AliasImpl#new#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#AliasImpl#new#tearOff::T value}) → test::ClassImpl<test::_#AliasImpl#new#tearOff::T>
   return new test::ClassImpl::•<test::_#AliasImpl#new#tearOff::T>(defaultValue: defaultValue, value: value);
diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect
index c4e0928..274ff60 100644
--- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect
+++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.expect
@@ -73,9 +73,9 @@
   return new test::Class::•<test::_#Alias#new#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#Alias#fact#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#fact#tearOff::T value}) → test::Class<test::_#Alias#fact#tearOff::T>
   return test::Class::fact<test::_#Alias#fact#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
+static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
   return test::Class::_#redirect#tearOff<test::_#Alias#redirect#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
+static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
   return test::Class::_#redirect2#tearOff<test::_#Alias#redirect2#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#AliasImpl#new#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#AliasImpl#new#tearOff::T value}) → test::ClassImpl<test::_#AliasImpl#new#tearOff::T>
   return new test::ClassImpl::•<test::_#AliasImpl#new#tearOff::T>(defaultValue: defaultValue, value: value);
diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect
index c4e0928..274ff60 100644
--- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.modular.expect
@@ -73,9 +73,9 @@
   return new test::Class::•<test::_#Alias#new#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#Alias#fact#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#fact#tearOff::T value}) → test::Class<test::_#Alias#fact#tearOff::T>
   return test::Class::fact<test::_#Alias#fact#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
+static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
   return test::Class::_#redirect#tearOff<test::_#Alias#redirect#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
+static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
   return test::Class::_#redirect2#tearOff<test::_#Alias#redirect2#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#AliasImpl#new#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#AliasImpl#new#tearOff::T value}) → test::ClassImpl<test::_#AliasImpl#new#tearOff::T>
   return new test::ClassImpl::•<test::_#AliasImpl#new#tearOff::T>(defaultValue: defaultValue, value: value);
diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect
index f9cd7be..8ef59c7 100644
--- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.outline.expect
@@ -22,16 +22,16 @@
   static method _#new#tearOff<T extends core::Object? = dynamic>({has-declared-initializer core::bool defaultValue, required self2::Class::_#new#tearOff::T% value}) → self2::Class<self2::Class::_#new#tearOff::T%>
     return new self2::Class::•<self2::Class::_#new#tearOff::T%>(defaultValue: defaultValue, value: value);
   @_in::patch
-  external static factory fact<T extends core::Object? = dynamic>({has-declared-initializer core::bool defaultValue, required self2::Class::fact::T% value}) → self2::Class<self2::Class::fact::T%>;
+  external static factory fact<T extends core::Object? = dynamic>({core::bool defaultValue = true, required self2::Class::fact::T% value}) → self2::Class<self2::Class::fact::T%>;
   static method _#fact#tearOff<T extends core::Object? = dynamic>({has-declared-initializer core::bool defaultValue, required self2::Class::_#fact#tearOff::T% value}) → self2::Class<self2::Class::_#fact#tearOff::T%>
     return self2::Class::fact<self2::Class::_#fact#tearOff::T%>(defaultValue: defaultValue, value: value);
   @_in::patch
-  external static factory redirect<T extends core::Object? = dynamic>({core::bool defaultValue, required self2::Class::redirect::T% value}) → self2::Class<self2::Class::redirect::T%> /* redirection-target: self2::ClassImpl::•<self2::Class::redirect::T%>*/
+  external static factory redirect<T extends core::Object? = dynamic>({core::bool defaultValue = null, required self2::Class::redirect::T% value}) → self2::Class<self2::Class::redirect::T%> /* redirection-target: self2::ClassImpl::•<self2::Class::redirect::T%>*/
     return new self2::ClassImpl::•<self2::Class::redirect::T%>(defaultValue: defaultValue, value: value);
   static method _#redirect#tearOff<T extends core::Object? = dynamic>({core::bool defaultValue, required self2::Class::_#redirect#tearOff::T% value}) → self2::Class<self2::Class::_#redirect#tearOff::T%>
     return self2::Class::redirect<self2::Class::_#redirect#tearOff::T%>(defaultValue: defaultValue, value: value);
   @_in::patch
-  external static factory redirect2<T extends core::Object? = dynamic>({core::bool defaultValue, required self2::Class::redirect2::T% value}) → self2::Class<self2::Class::redirect2::T%> /* redirection-target: self2::ClassImpl::patched<self2::Class::redirect2::T%>*/
+  external static factory redirect2<T extends core::Object? = dynamic>({core::bool defaultValue = null, required self2::Class::redirect2::T% value}) → self2::Class<self2::Class::redirect2::T%> /* redirection-target: self2::ClassImpl::patched<self2::Class::redirect2::T%>*/
     return new self2::ClassImpl::patched<self2::Class::redirect2::T%>(defaultValue: defaultValue, value: value);
   static method _#redirect2#tearOff<T extends core::Object? = dynamic>({core::bool defaultValue, required self2::Class::_#redirect2#tearOff::T% value}) → self2::Class<self2::Class::_#redirect2#tearOff::T%>
     return self2::Class::redirect2<self2::Class::_#redirect2#tearOff::T%>(defaultValue: defaultValue, value: value);
diff --git a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.transformed.expect b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.transformed.expect
index f76c662..7d14635 100644
--- a/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/dart2js/tear_off_patch/main.dart.weak.transformed.expect
@@ -73,9 +73,9 @@
   return new test::Class::•<test::_#Alias#new#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#Alias#fact#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#fact#tearOff::T value}) → test::Class<test::_#Alias#fact#tearOff::T>
   return test::Class::fact<test::_#Alias#fact#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
+static method _#Alias#redirect#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect#tearOff::T value}) → test::Class<test::_#Alias#redirect#tearOff::T>
   return test::Class::_#redirect#tearOff<test::_#Alias#redirect#tearOff::T>(defaultValue: defaultValue, value: value);
-static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C15, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
+static method _#Alias#redirect2#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#Alias#redirect2#tearOff::T value}) → test::Class<test::_#Alias#redirect2#tearOff::T>
   return test::Class::_#redirect2#tearOff<test::_#Alias#redirect2#tearOff::T>(defaultValue: defaultValue, value: value);
 static method _#AliasImpl#new#tearOff<T extends core::num>({core::bool defaultValue = #C14, required test::_#AliasImpl#new#tearOff::T value}) → test::ClassImpl<test::_#AliasImpl#new#tearOff::T>
   return new test::ClassImpl::•<test::_#AliasImpl#new#tearOff::T>(defaultValue: defaultValue, value: value);
diff --git a/pkg/front_end/testcases/dart2wasm/issue55529.dart b/pkg/front_end/testcases/dart2wasm/issue55529.dart
new file mode 100644
index 0000000..0b4890c
--- /dev/null
+++ b/pkg/front_end/testcases/dart2wasm/issue55529.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A1 {
+  final Object? a;
+
+  A1({required this.a});
+}
+
+class B1 extends A1 {
+  B1({super.a}) {}
+}
+
+class A2 {
+  final Object? a;
+
+  A2(this.a);
+}
+
+class B2 extends A2 {
+  B2([super.a]);
+}
+
+void main() {
+  var f1 = B1.new;
+  var f2 = B2.new;
+}
diff --git a/pkg/front_end/testcases/dart2wasm/issue55529.dart.strong.expect b/pkg/front_end/testcases/dart2wasm/issue55529.dart.strong.expect
new file mode 100644
index 0000000..cac766a
--- /dev/null
+++ b/pkg/front_end/testcases/dart2wasm/issue55529.dart.strong.expect
@@ -0,0 +1,43 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A1 extends core::Object {
+  final field core::Object? a;
+  constructor •({required core::Object? a}) → self::A1
+    : self::A1::a = a, super core::Object::•()
+    ;
+  static method _#new#tearOff({required core::Object? a}) → self::A1
+    return new self::A1::•(a: a);
+}
+class B1 extends self::A1 {
+  constructor •({core::Object? a = #C1}) → self::B1
+    : super self::A1::•(a: a) {}
+  static method _#new#tearOff({core::Object? a = #C1}) → self::B1
+    return new self::B1::•(a: a);
+}
+class A2 extends core::Object {
+  final field core::Object? a;
+  constructor •(core::Object? a) → self::A2
+    : self::A2::a = a, super core::Object::•()
+    ;
+  static method _#new#tearOff(core::Object? a) → self::A2
+    return new self::A2::•(a);
+}
+class B2 extends self::A2 {
+  constructor •([core::Object? a = #C1]) → self::B2
+    : super self::A2::•(a)
+    ;
+  static method _#new#tearOff([core::Object? a = #C1]) → self::B2
+    return new self::B2::•(a);
+}
+static method main() → void {
+  ({a: core::Object?}) → self::B1 f1 = #C2;
+  ([core::Object?]) → self::B2 f2 = #C3;
+}
+
+constants  {
+  #C1 = null
+  #C2 = static-tearoff self::B1::_#new#tearOff
+  #C3 = static-tearoff self::B2::_#new#tearOff
+}
diff --git a/pkg/front_end/testcases/dart2wasm/issue55529.dart.strong.transformed.expect b/pkg/front_end/testcases/dart2wasm/issue55529.dart.strong.transformed.expect
new file mode 100644
index 0000000..cac766a
--- /dev/null
+++ b/pkg/front_end/testcases/dart2wasm/issue55529.dart.strong.transformed.expect
@@ -0,0 +1,43 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A1 extends core::Object {
+  final field core::Object? a;
+  constructor •({required core::Object? a}) → self::A1
+    : self::A1::a = a, super core::Object::•()
+    ;
+  static method _#new#tearOff({required core::Object? a}) → self::A1
+    return new self::A1::•(a: a);
+}
+class B1 extends self::A1 {
+  constructor •({core::Object? a = #C1}) → self::B1
+    : super self::A1::•(a: a) {}
+  static method _#new#tearOff({core::Object? a = #C1}) → self::B1
+    return new self::B1::•(a: a);
+}
+class A2 extends core::Object {
+  final field core::Object? a;
+  constructor •(core::Object? a) → self::A2
+    : self::A2::a = a, super core::Object::•()
+    ;
+  static method _#new#tearOff(core::Object? a) → self::A2
+    return new self::A2::•(a);
+}
+class B2 extends self::A2 {
+  constructor •([core::Object? a = #C1]) → self::B2
+    : super self::A2::•(a)
+    ;
+  static method _#new#tearOff([core::Object? a = #C1]) → self::B2
+    return new self::B2::•(a);
+}
+static method main() → void {
+  ({a: core::Object?}) → self::B1 f1 = #C2;
+  ([core::Object?]) → self::B2 f2 = #C3;
+}
+
+constants  {
+  #C1 = null
+  #C2 = static-tearoff self::B1::_#new#tearOff
+  #C3 = static-tearoff self::B2::_#new#tearOff
+}
diff --git a/pkg/front_end/testcases/dart2wasm/issue55529.dart.textual_outline.expect b/pkg/front_end/testcases/dart2wasm/issue55529.dart.textual_outline.expect
new file mode 100644
index 0000000..6fd4f5a
--- /dev/null
+++ b/pkg/front_end/testcases/dart2wasm/issue55529.dart.textual_outline.expect
@@ -0,0 +1,19 @@
+class A1 {
+  final Object? a;
+  A1({required this.a});
+}
+
+class B1 extends A1 {
+  B1({super.a}) {}
+}
+
+class A2 {
+  final Object? a;
+  A2(this.a);
+}
+
+class B2 extends A2 {
+  B2([super.a]);
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/dart2wasm/issue55529.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/dart2wasm/issue55529.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..7264753
--- /dev/null
+++ b/pkg/front_end/testcases/dart2wasm/issue55529.dart.textual_outline_modelled.expect
@@ -0,0 +1,19 @@
+class A1 {
+  A1({required this.a});
+  final Object? a;
+}
+
+class A2 {
+  A2(this.a);
+  final Object? a;
+}
+
+class B1 extends A1 {
+  B1({super.a}) {}
+}
+
+class B2 extends A2 {
+  B2([super.a]);
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect
index c309efe..7bfb695 100644
--- a/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/dartdevc/factory_patch/main.dart.weak.outline.expect
@@ -20,7 +20,7 @@
     : self2::Class::defaultValue = defaultValue, super core::Object::•()
     ;
   @_in::patch
-  external static factory fact({has-declared-initializer core::bool defaultValue}) → self2::Class;
+  external static factory fact({core::bool defaultValue = true}) → self2::Class;
   static method _#fact#tearOff({has-declared-initializer core::bool defaultValue}) → self2::Class
     return self2::Class::fact(defaultValue: defaultValue);
   @_in::patch
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.expect
index 60a817b..ab19337 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.expect
@@ -103,7 +103,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class B extends core::Object implements core::Enum {
   synthetic constructor •() → self::B
@@ -112,7 +112,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumInterface extends core::Object implements core::Enum {
   synthetic constructor •() → self::EnumInterface
@@ -126,7 +126,7 @@
   get index() → core::int
     return 0;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class AbstractEnumClass extends self::EnumInterface {
   synthetic constructor •() → self::AbstractEnumClass
@@ -138,7 +138,7 @@
     : super self::AbstractEnumClass::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumMixin extends core::Enum /*isMixinDeclaration*/  {
 }
@@ -157,13 +157,13 @@
     : super self::AbstractEnumClass2::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #org-dartlang-testcase:///enum_as_supertype_error.dart::_name
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.transformed.expect
index c0fc5d4..cca6178 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.strong.transformed.expect
@@ -103,7 +103,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class B extends core::Object implements core::Enum {
   synthetic constructor •() → self::B
@@ -112,7 +112,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumInterface extends core::Object implements core::Enum {
   synthetic constructor •() → self::EnumInterface
@@ -126,7 +126,7 @@
   get index() → core::int
     return 0;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class AbstractEnumClass extends self::EnumInterface {
   synthetic constructor •() → self::AbstractEnumClass
@@ -138,7 +138,7 @@
     : super self::AbstractEnumClass::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumMixin extends core::Enum /*isMixinDeclaration*/  {
 }
@@ -157,13 +157,13 @@
     : super self::AbstractEnumClass2::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #org-dartlang-testcase:///enum_as_supertype_error.dart::_name
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.expect
index 60a817b..d5b8b8f 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.expect
@@ -103,7 +103,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class B extends core::Object implements core::Enum {
   synthetic constructor •() → self::B
@@ -112,7 +112,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumInterface extends core::Object implements core::Enum {
   synthetic constructor •() → self::EnumInterface
@@ -126,7 +126,7 @@
   get index() → core::int
     return 0;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class AbstractEnumClass extends self::EnumInterface {
   synthetic constructor •() → self::AbstractEnumClass
@@ -138,7 +138,7 @@
     : super self::AbstractEnumClass::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumMixin extends core::Enum /*isMixinDeclaration*/  {
 }
@@ -157,7 +157,7 @@
     : super self::AbstractEnumClass2::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.modular.expect
index 60a817b..d5b8b8f 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.modular.expect
@@ -103,7 +103,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class B extends core::Object implements core::Enum {
   synthetic constructor •() → self::B
@@ -112,7 +112,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumInterface extends core::Object implements core::Enum {
   synthetic constructor •() → self::EnumInterface
@@ -126,7 +126,7 @@
   get index() → core::int
     return 0;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class AbstractEnumClass extends self::EnumInterface {
   synthetic constructor •() → self::AbstractEnumClass
@@ -138,7 +138,7 @@
     : super self::AbstractEnumClass::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumMixin extends core::Enum /*isMixinDeclaration*/  {
 }
@@ -157,7 +157,7 @@
     : super self::AbstractEnumClass2::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.outline.expect
index 5a74d54..5185139 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.outline.expect
@@ -102,7 +102,7 @@
   get foo() → core::int
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class B extends core::Object implements core::Enum {
   synthetic constructor •() → self::B
@@ -110,7 +110,7 @@
   get foo() → core::int
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class EnumInterface extends core::Object implements core::Enum {
   synthetic constructor •() → self::EnumInterface
@@ -122,7 +122,7 @@
   get index() → core::int
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class AbstractEnumClass extends self::EnumInterface {
   synthetic constructor •() → self::AbstractEnumClass
@@ -132,7 +132,7 @@
   synthetic constructor •() → self::EnumClass2
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class EnumMixin extends core::Enum /*isMixinDeclaration*/  {
 }
@@ -149,7 +149,7 @@
   synthetic constructor •() → self::EnumClass3
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_name, 1, 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/enhanced_enums/enum_as_supertype_error.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.transformed.expect
index c0fc5d4..dad2f9c 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype_error.dart.weak.transformed.expect
@@ -103,7 +103,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class B extends core::Object implements core::Enum {
   synthetic constructor •() → self::B
@@ -112,7 +112,7 @@
   get foo() → core::int
     return this.{core::Enum::index}{core::int};
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumInterface extends core::Object implements core::Enum {
   synthetic constructor •() → self::EnumInterface
@@ -126,7 +126,7 @@
   get index() → core::int
     return 0;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class AbstractEnumClass extends self::EnumInterface {
   synthetic constructor •() → self::AbstractEnumClass
@@ -138,7 +138,7 @@
     : super self::AbstractEnumClass::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class EnumMixin extends core::Enum /*isMixinDeclaration*/  {
 }
@@ -157,7 +157,7 @@
     : super self::AbstractEnumClass2::•()
     ;
   no-such-method-forwarder get _name() → core::String
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.expect b/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.expect
index 6054f37..9adc7a4 100644
--- a/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.expect
@@ -75,7 +75,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method x() → core::int
-    return this.{self::A::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::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
 }
@@ -190,7 +190,7 @@
 
 constants  {
   #C1 = #x
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.transformed.expect
index 6054f37..9adc7a4 100644
--- a/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extension_types/abstract_members.dart.strong.transformed.expect
@@ -75,7 +75,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method x() → core::int
-    return this.{self::A::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::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
 }
@@ -190,7 +190,7 @@
 
 constants  {
   #C1 = #x
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.expect b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.expect
index 6054f37..34d0c68 100644
--- a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.expect
+++ b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.expect
@@ -75,7 +75,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method x() → core::int
-    return this.{self::A::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::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.modular.expect b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.modular.expect
index 6054f37..34d0c68 100644
--- a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.modular.expect
@@ -75,7 +75,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method x() → core::int
-    return this.{self::A::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::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.outline.expect b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.outline.expect
index ee0777c..ac840d7 100644
--- a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.outline.expect
@@ -74,7 +74,7 @@
   synthetic constructor •() → self::A
     ;
   no-such-method-forwarder method x() → core::int
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#x, 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::noSuchMethod}(new core::_InvocationMirror::_withType(#x, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
 }
diff --git a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.transformed.expect
index 6054f37..34d0c68 100644
--- a/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extension_types/abstract_members.dart.weak.transformed.expect
@@ -75,7 +75,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method x() → core::int
-    return this.{self::A::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::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/extension_types/issue53209.dart.weak.outline.expect b/pkg/front_end/testcases/extension_types/issue53209.dart.weak.outline.expect
index 3e736e9..5027c3a 100644
--- a/pkg/front_end/testcases/extension_types/issue53209.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/extension_types/issue53209.dart.weak.outline.expect
@@ -100,7 +100,7 @@
   return invalid-expression "pkg/front_end/testcases/extension_types/issue53209.dart:9:59: Error: The constructor function type 'E Function(int)' isn't a subtype of 'E Function(int, String, num)'.
   factory E.redirTooMany2(int foo, String bar, num baz) = E; // Error.
                                                           ^";
-static extension-type-member method E|constructor#redirTooMany3(core::int foo, [dynamic bar]) → self::E% /* erasure=core::int, declared=! */
+static extension-type-member method E|constructor#redirTooMany3(core::int foo, [dynamic bar = null]) → self::E% /* erasure=core::int, declared=! */
   return invalid-expression "pkg/front_end/testcases/extension_types/issue53209.dart:10:53: Error: The constructor function type 'E Function(int)' isn't a subtype of 'E Function(int, [dynamic])'.
   factory E.redirTooMany3(int foo, [dynamic bar]) = E; // Error.
                                                     ^";
diff --git a/pkg/front_end/testcases/extension_types/pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/pattern.dart.strong.transformed.expect
index 8cf7ad1..12fcf1c 100644
--- a/pkg/front_end/testcases/extension_types/pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extension_types/pattern.dart.strong.transformed.expect
@@ -36,7 +36,7 @@
     final synthesized self::MyMap<core::String, core::bool> /* erasure=core::Map<core::String, core::bool> */ #1#0 = map;
     synthesized core::bool? #1#3;
     synthesized core::bool #1#3#isSet = false;
-    if(!((!((#1#3#isSet ?{core::bool?} #1#3{core::bool?} : let final core::bool* #t2 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?}) == null) || null is core::bool && #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::bool #t3 = b = let core::bool? #t4 = #1#3#isSet ?{core::bool?} #1#3{core::bool?} : let final core::bool* #t5 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} in #t4 == null ?{core::bool} #t4 as{Unchecked} core::bool : #t4{core::bool} in true)))
+    if(!((!((#1#3#isSet ?{core::bool?} #1#3{core::bool?} : let final core::bool #t2 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?}) == null) || null is core::bool && #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::bool #t3 = b = let core::bool? #t4 = #1#3#isSet ?{core::bool?} #1#3{core::bool?} : let final core::bool #t5 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} in #t4 == null ?{core::bool} #t4 as{Unchecked} core::bool : #t4{core::bool} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   {
@@ -55,8 +55,8 @@
     synthesized core::bool #3#3#isSet = false;
     {
       hoisted core::bool d;
-      if(!((#3#3#isSet ?{core::bool?} #3#3{core::bool?} : let final core::bool* #t6 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?}) == null) || null is core::bool && #3#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) {
-        d = let core::bool? #t7 = #3#3#isSet ?{core::bool?} #3#3{core::bool?} : let final core::bool* #t8 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} in #t7 == null ?{core::bool} #t7 as{Unchecked} core::bool : #t7{core::bool};
+      if(!((#3#3#isSet ?{core::bool?} #3#3{core::bool?} : let final core::bool #t6 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?}) == null) || null is core::bool && #3#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) {
+        d = let core::bool? #t7 = #3#3#isSet ?{core::bool?} #3#3{core::bool?} : let final core::bool #t8 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C2){(core::Object?) → core::bool?} in #t7 == null ?{core::bool} #t7 as{Unchecked} core::bool : #t7{core::bool};
         {}
       }
     }
@@ -70,7 +70,7 @@
     {
       lowered hoisted core::int e#case#0;
       lowered hoisted core::int e#case#1;
-      if((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t10 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t11 = e#case#0 = #4#0.{core::List::[]}(0){(core::int) → core::int} in true) && e#case#0.{core::num::>}(5){(core::num) → core::bool} && (let final core::int #t12 = #t9 = e#case#0 in true) || (#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t13 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C3 && (let final core::int #t14 = e#case#1 = #4#0.{core::List::[]}(1){(core::int) → core::int} in true) && e#case#1.{core::num::<}(5){(core::num) → core::bool} && (let final core::int #t15 = #t9 = e#case#1 in true)) {
+      if((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t10 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t11 = e#case#0 = #4#0.{core::List::[]}(0){(core::int) → core::int} in true) && e#case#0.{core::num::>}(5){(core::num) → core::bool} && (let final core::int #t12 = #t9 = e#case#0 in true) || (#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t13 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C3 && (let final core::int #t14 = e#case#1 = #4#0.{core::List::[]}(1){(core::int) → core::int} in true) && e#case#1.{core::num::<}(5){(core::num) → core::bool} && (let final core::int #t15 = #t9 = e#case#1 in true)) {
         core::int e = #t9{core::int};
         {
           core::print(e);
@@ -85,7 +85,7 @@
     synthesized core::bool #5#3#isSet = false;
     {
       hoisted core::bool e;
-      if((!((#5#3#isSet ?{core::bool?} #5#3{core::bool?} : let final core::bool* #t16 = #5#3#isSet = true in #5#3 = #5#0.{core::Map::[]}(#C1){(core::Object?) → core::bool?}) == null) || null is core::bool && #5#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::bool #t17 = e = let core::bool? #t18 = #5#3#isSet ?{core::bool?} #5#3{core::bool?} : let final core::bool* #t19 = #5#3#isSet = true in #5#3 = #5#0.{core::Map::[]}(#C1){(core::Object?) → core::bool?} in #t18 == null ?{core::bool} #t18 as{Unchecked} core::bool : #t18{core::bool} in true)) {
+      if((!((#5#3#isSet ?{core::bool?} #5#3{core::bool?} : let final core::bool #t16 = #5#3#isSet = true in #5#3 = #5#0.{core::Map::[]}(#C1){(core::Object?) → core::bool?}) == null) || null is core::bool && #5#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::bool #t17 = e = let core::bool? #t18 = #5#3#isSet ?{core::bool?} #5#3{core::bool?} : let final core::bool #t19 = #5#3#isSet = true in #5#3 = #5#0.{core::Map::[]}(#C1){(core::Object?) → core::bool?} in #t18 == null ?{core::bool} #t18 as{Unchecked} core::bool : #t18{core::bool} in true)) {
         {
           core::print(e);
         }
diff --git a/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect
index dfbc241..d7ea58e 100644
--- a/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extension_types/pattern.dart.weak.transformed.expect
@@ -66,7 +66,7 @@
     {
       lowered hoisted core::int e#case#0;
       lowered hoisted core::int e#case#1;
-      if((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t4 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = e#case#0 = #4#0.{core::List::[]}(0){(core::int) → core::int} in true) && e#case#0.{core::num::>}(5){(core::num) → core::bool} && (let final core::int #t6 = #t3 = e#case#0 in true) || (#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t7 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C3 && (let final core::int #t8 = e#case#1 = #4#0.{core::List::[]}(1){(core::int) → core::int} in true) && e#case#1.{core::num::<}(5){(core::num) → core::bool} && (let final core::int #t9 = #t3 = e#case#1 in true)) {
+      if((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t4 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = e#case#0 = #4#0.{core::List::[]}(0){(core::int) → core::int} in true) && e#case#0.{core::num::>}(5){(core::num) → core::bool} && (let final core::int #t6 = #t3 = e#case#0 in true) || (#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t7 = #4#1#isSet = true in #4#1 = #4#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C3 && (let final core::int #t8 = e#case#1 = #4#0.{core::List::[]}(1){(core::int) → core::int} in true) && e#case#1.{core::num::<}(5){(core::num) → core::bool} && (let final core::int #t9 = #t3 = e#case#1 in true)) {
         core::int e = #t3{core::int};
         {
           core::print(e);
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect
index 741a7c7..2fd753c 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.strong.transformed.expect
@@ -15,14 +15,14 @@
 
 static method main() → dynamic async /* emittedValueType= dynamic */ {
   await LoadLibrary(prefix);
-  self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
-  self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
-  self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
-  self::expect(84, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
-  self::expect(85, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
-  self::expect(42, let final core::Object* #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
-  self::expect(87, let final core::Object* #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty = 87);
-  self::expect(87, let final core::Object* #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
+  self::expect(0, let final core::Object? #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
+  self::expect(0, let final core::Object? #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
+  self::expect(42, let final core::Object? #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
+  self::expect(84, let final core::Object? #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
+  self::expect(85, let final core::Object? #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
+  self::expect(42, let final core::Object? #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
+  self::expect(87, let final core::Object? #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty = 87);
+  self::expect(87, let final core::Object? #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
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 741a7c7..2fd753c 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
@@ -15,14 +15,14 @@
 
 static method main() → dynamic async /* emittedValueType= dynamic */ {
   await LoadLibrary(prefix);
-  self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
-  self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
-  self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
-  self::expect(84, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
-  self::expect(85, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
-  self::expect(42, let final core::Object* #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
-  self::expect(87, let final core::Object* #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty = 87);
-  self::expect(87, let final core::Object* #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
+  self::expect(0, let final core::Object? #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
+  self::expect(0, let final core::Object? #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
+  self::expect(42, let final core::Object? #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
+  self::expect(84, let final core::Object? #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
+  self::expect(85, let final core::Object? #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
+  self::expect(42, let final core::Object? #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
+  self::expect(87, let final core::Object? #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty = 87);
+  self::expect(87, let final core::Object? #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect
index 0d64fef..7bc25603 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.strong.transformed.expect
@@ -7,13 +7,13 @@
 
 static method main() → dynamic async /* emittedValueType= dynamic */ {
   await LoadLibrary(prefix);
-  self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
-  self::expect(42, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);
-  self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
-  self::expect(0, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
-  self::expect(87, let final core::Object* #t5 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty = 87);
-  self::expect(87, let final core::Object* #t6 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
-  self::expect(87, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
+  self::expect(0, let final core::Object? #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
+  self::expect(42, let final core::Object? #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);
+  self::expect(42, let final core::Object? #t3 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
+  self::expect(0, let final core::Object? #t4 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
+  self::expect(87, let final core::Object? #t5 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty = 87);
+  self::expect(87, let final core::Object? #t6 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
+  self::expect(87, let final core::Object? #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
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 0d64fef..7bc25603 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
@@ -7,13 +7,13 @@
 
 static method main() → dynamic async /* emittedValueType= dynamic */ {
   await LoadLibrary(prefix);
-  self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
-  self::expect(42, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);
-  self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
-  self::expect(0, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
-  self::expect(87, let final core::Object* #t5 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty = 87);
-  self::expect(87, let final core::Object* #t6 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
-  self::expect(87, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
+  self::expect(0, let final core::Object? #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
+  self::expect(42, let final core::Object? #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);
+  self::expect(42, let final core::Object? #t3 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
+  self::expect(0, let final core::Object? #t4 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
+  self::expect(87, let final core::Object? #t5 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty = 87);
+  self::expect(87, let final core::Object? #t6 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
+  self::expect(87, let final core::Object? #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
   if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.strong.expect b/pkg/front_end/testcases/general/abstract_members.dart.strong.expect
index 5ae1efa..9a9c099 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.strong.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.strong.expect
@@ -254,21 +254,21 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set property2(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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set property3(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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 class MyMock2 extends self::MyMock1 {
   synthetic constructor •() → self::MyMock2
@@ -355,8 +355,8 @@
 
 constants  {
   #C1 = #property1=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #abstractMethod
   #C5 = <dynamic>[]
   #C6 = #interfaceMethod1
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 5ae1efa..2928680 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
@@ -254,21 +254,21 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set property2(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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set property3(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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 class MyMock2 extends self::MyMock1 {
   synthetic constructor •() → self::MyMock2
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.weak.modular.expect b/pkg/front_end/testcases/general/abstract_members.dart.weak.modular.expect
index 5ae1efa..2928680 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.weak.modular.expect
@@ -254,21 +254,21 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder set property1(dynamic _) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[_]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod() → dynamic
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method interfaceMethod1() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set interfaceMethod1(dynamic value) → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method interfaceMethod2() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method interfaceMethod3() → void
-    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::MyMock1::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set property2(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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set property3(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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 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 e96a6b8..65d74f7 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
@@ -242,21 +242,21 @@
   method noSuchMethod(core::Invocation _) → 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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>{}))){(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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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.strong.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
index 284d3c9..5cbace2 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.expect
@@ -27,13 +27,13 @@
     : 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::B;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
index 284d3c9..5cbace2 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.strong.transformed.expect
@@ -27,13 +27,13 @@
     : 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::B;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 284d3c9..920253b 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
@@ -27,7 +27,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))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.modular.expect
index 284d3c9..920253b 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.modular.expect
@@ -27,7 +27,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))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
index 7000d65..30a9327 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
@@ -23,7 +23,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>{}))){(core::Invocation) → 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 284d3c9..920253b 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
@@ -27,7 +27,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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::B;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/annotation_new.dart b/pkg/front_end/testcases/general/annotation_new.dart
new file mode 100644
index 0000000..0204875
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'annotation_new.dart' as self;
+
+const field = 1;
+
+void method() {}
+
+class Class {
+  const Class();
+
+  static const field = 1;
+
+  static void method() {}
+}
+
+class GenericClass<X, Y> {
+  const GenericClass();
+}
+
+@Class.new() // OK
+@GenericClass.new() // OK
+@GenericClass<int, String>.new() // OK
+@self.Class.new() // OK
+@self.GenericClass.new() // OK
+@self.GenericClass<int, String>.new() // OK
+@field // OK
+@self.field // OK
+@method // Error
+@self.method // Error
+@Class.field // OK
+@Class.method // Error
+@Class.new // Error
+@self.Class.field // OK
+@self.Class.method // Error
+@self.Class.new // Error
+main() {}
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.strong.expect b/pkg/front_end/testcases/general/annotation_new.dart.strong.expect
new file mode 100644
index 0000000..ca726185
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.strong.expect
@@ -0,0 +1,90 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @method // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.method // Error
+//       ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.method // Error
+//        ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.new // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.method // Error
+//             ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.new // Error
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///annotation_new.dart" as self;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  static const field core::int field = #C1;
+  const constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method method() → void {}
+}
+class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
+    : super core::Object::•()
+    ;
+}
+static const field core::int field = #C1;
+static method method() → void {}
+@#C2
+@#C3
+@#C4
+@#C2
+@#C3
+@#C4
+@#C1
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@method // Error
+ ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.method // Error
+      ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.method // Error
+       ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.new // Error
+ ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.method // Error
+            ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.new // Error
+      ^"
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+  #C2 = self::Class {}
+  #C3 = self::GenericClass<dynamic, dynamic> {}
+  #C4 = self::GenericClass<core::int, core::String> {}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///annotation_new.dart:
+- Class. (from org-dartlang-testcase:///annotation_new.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
+- GenericClass. (from org-dartlang-testcase:///annotation_new.dart:20:9)
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.strong.transformed.expect b/pkg/front_end/testcases/general/annotation_new.dart.strong.transformed.expect
new file mode 100644
index 0000000..ca726185
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.strong.transformed.expect
@@ -0,0 +1,90 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @method // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.method // Error
+//       ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.method // Error
+//        ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.new // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.method // Error
+//             ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.new // Error
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///annotation_new.dart" as self;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  static const field core::int field = #C1;
+  const constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method method() → void {}
+}
+class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
+    : super core::Object::•()
+    ;
+}
+static const field core::int field = #C1;
+static method method() → void {}
+@#C2
+@#C3
+@#C4
+@#C2
+@#C3
+@#C4
+@#C1
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@method // Error
+ ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.method // Error
+      ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.method // Error
+       ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.new // Error
+ ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.method // Error
+            ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.new // Error
+      ^"
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+  #C2 = self::Class {}
+  #C3 = self::GenericClass<dynamic, dynamic> {}
+  #C4 = self::GenericClass<core::int, core::String> {}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///annotation_new.dart:
+- Class. (from org-dartlang-testcase:///annotation_new.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
+- GenericClass. (from org-dartlang-testcase:///annotation_new.dart:20:9)
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.textual_outline.expect b/pkg/front_end/testcases/general/annotation_new.dart.textual_outline.expect
new file mode 100644
index 0000000..b2294c6
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.textual_outline.expect
@@ -0,0 +1,33 @@
+import 'annotation_new.dart' as self;
+
+const field = 1;
+
+void method() {}
+
+class Class {
+  const Class();
+  static const field = 1;
+  static void method() {}
+}
+
+class GenericClass<X, Y> {
+  const GenericClass();
+}
+
+@Class.new()
+@GenericClass.new()
+@GenericClass<int, String>.new()
+@self.Class.new()
+@self.GenericClass.new()
+@self.GenericClass<int, String>.new()
+@field
+@self.field
+@method
+@self.method
+@Class.field
+@Class.method
+@Class.new
+@self.Class.field
+@self.Class.method
+@self.Class.new
+main() {}
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/annotation_new.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..4adb63a
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.textual_outline_modelled.expect
@@ -0,0 +1,33 @@
+import 'annotation_new.dart' as self;
+
+class Class {
+  const Class();
+  static const field = 1;
+  static void method() {}
+}
+
+class GenericClass<X, Y> {
+  const GenericClass();
+}
+
+const field = 1;
+
+@Class.new()
+@GenericClass.new()
+@GenericClass<int, String>.new()
+@self.Class.new()
+@self.GenericClass.new()
+@self.GenericClass<int, String>.new()
+@field
+@self.field
+@method
+@self.method
+@Class.field
+@Class.method
+@Class.new
+@self.Class.field
+@self.Class.method
+@self.Class.new
+main() {}
+
+void method() {}
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.weak.expect b/pkg/front_end/testcases/general/annotation_new.dart.weak.expect
new file mode 100644
index 0000000..6639f76
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.weak.expect
@@ -0,0 +1,90 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @method // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.method // Error
+//       ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.method // Error
+//        ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.new // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.method // Error
+//             ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.new // Error
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///annotation_new.dart" as self;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  static const field core::int field = #C1;
+  const constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method method() → void {}
+}
+class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
+    : super core::Object::•()
+    ;
+}
+static const field core::int field = #C1;
+static method method() → void {}
+@#C2
+@#C3
+@#C4
+@#C2
+@#C3
+@#C4
+@#C1
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@method // Error
+ ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.method // Error
+      ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.method // Error
+       ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.new // Error
+ ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.method // Error
+            ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.new // Error
+      ^"
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+  #C2 = self::Class {}
+  #C3 = self::GenericClass<dynamic, dynamic> {}
+  #C4 = self::GenericClass<core::int*, core::String*> {}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///annotation_new.dart:
+- Class. (from org-dartlang-testcase:///annotation_new.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
+- GenericClass. (from org-dartlang-testcase:///annotation_new.dart:20:9)
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.weak.modular.expect b/pkg/front_end/testcases/general/annotation_new.dart.weak.modular.expect
new file mode 100644
index 0000000..6639f76
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.weak.modular.expect
@@ -0,0 +1,90 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @method // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.method // Error
+//       ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.method // Error
+//        ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.new // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.method // Error
+//             ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.new // Error
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///annotation_new.dart" as self;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  static const field core::int field = #C1;
+  const constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method method() → void {}
+}
+class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
+    : super core::Object::•()
+    ;
+}
+static const field core::int field = #C1;
+static method method() → void {}
+@#C2
+@#C3
+@#C4
+@#C2
+@#C3
+@#C4
+@#C1
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@method // Error
+ ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.method // Error
+      ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.method // Error
+       ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.new // Error
+ ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.method // Error
+            ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.new // Error
+      ^"
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+  #C2 = self::Class {}
+  #C3 = self::GenericClass<dynamic, dynamic> {}
+  #C4 = self::GenericClass<core::int*, core::String*> {}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///annotation_new.dart:
+- Class. (from org-dartlang-testcase:///annotation_new.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
+- GenericClass. (from org-dartlang-testcase:///annotation_new.dart:20:9)
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.weak.outline.expect b/pkg/front_end/testcases/general/annotation_new.dart.weak.outline.expect
new file mode 100644
index 0000000..751991c
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.weak.outline.expect
@@ -0,0 +1,93 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @method // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.method // Error
+//       ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.method // Error
+//        ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.new // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.method // Error
+//             ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.new // Error
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///annotation_new.dart" as self;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  static const field core::int field = 1;
+  const constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method method() → void
+    ;
+}
+class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
+    : super core::Object::•()
+    ;
+}
+static const field core::int field = 1;
+static method method() → void
+  ;
+@self::Class::•()
+@self::GenericClass::•<dynamic, dynamic>()
+@self::GenericClass::•<core::int, core::String>()
+@self::Class::•()
+@self::GenericClass::•<dynamic, dynamic>()
+@self::GenericClass::•<core::int, core::String>()
+@self::field
+@self::field
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@method // Error
+ ^" in self::method
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.method // Error
+      ^" in self::method
+@self::Class::field
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.method // Error
+       ^" in self::Class::method
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.new // Error
+ ^" in self::Class::•
+@self::Class::field
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.method // Error
+            ^" in self::Class::method
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.new // Error
+      ^" in self::Class::•
+static method main() → dynamic
+  ;
+
+
+Extra constant evaluation status:
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_new.dart:23:2 -> InstanceConstant(const Class{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_new.dart:24:2 -> InstanceConstant(const GenericClass<dynamic, dynamic>{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_new.dart:25:2 -> InstanceConstant(const GenericClass<int*, String*>{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_new.dart:26:2 -> InstanceConstant(const Class{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_new.dart:27:2 -> InstanceConstant(const GenericClass<dynamic, dynamic>{})
+Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotation_new.dart:28:2 -> InstanceConstant(const GenericClass<int*, String*>{})
+Evaluated: StaticGet @ org-dartlang-testcase:///annotation_new.dart:29:2 -> IntConstant(1)
+Evaluated: StaticGet @ org-dartlang-testcase:///annotation_new.dart:30:7 -> IntConstant(1)
+Evaluated: StaticGet @ org-dartlang-testcase:///annotation_new.dart:33:8 -> IntConstant(1)
+Evaluated: StaticGet @ org-dartlang-testcase:///annotation_new.dart:36:13 -> IntConstant(1)
+Extra constant evaluation: evaluated: 10, effectively constant: 10
diff --git a/pkg/front_end/testcases/general/annotation_new.dart.weak.transformed.expect b/pkg/front_end/testcases/general/annotation_new.dart.weak.transformed.expect
new file mode 100644
index 0000000..6639f76
--- /dev/null
+++ b/pkg/front_end/testcases/general/annotation_new.dart.weak.transformed.expect
@@ -0,0 +1,90 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @method // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.method // Error
+//       ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.method // Error
+//        ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @Class.new // Error
+//  ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.method // Error
+//             ^
+//
+// pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+// @self.Class.new // Error
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///annotation_new.dart" as self;
+
+class Class extends core::Object /*hasConstConstructor*/  {
+  static const field core::int field = #C1;
+  const constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method method() → void {}
+}
+class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
+    : super core::Object::•()
+    ;
+}
+static const field core::int field = #C1;
+static method method() → void {}
+@#C2
+@#C3
+@#C4
+@#C2
+@#C3
+@#C4
+@#C1
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:31:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@method // Error
+ ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:32:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.method // Error
+      ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:34:8: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.method // Error
+       ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:35:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@Class.new // Error
+ ^"
+@#C1
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:37:13: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.method // Error
+            ^"
+@invalid-expression "pkg/front_end/testcases/general/annotation_new.dart:38:7: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.Class.new // Error
+      ^"
+static method main() → dynamic {}
+
+constants  {
+  #C1 = 1
+  #C2 = self::Class {}
+  #C3 = self::GenericClass<dynamic, dynamic> {}
+  #C4 = self::GenericClass<core::int*, core::String*> {}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///annotation_new.dart:
+- Class. (from org-dartlang-testcase:///annotation_new.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
+- GenericClass. (from org-dartlang-testcase:///annotation_new.dart:20:9)
diff --git a/pkg/front_end/testcases/general/bounds_parameters.dart.strong.expect b/pkg/front_end/testcases/general/bounds_parameters.dart.strong.expect
index 108c0da..0cc4089 100644
--- a/pkg/front_end/testcases/general/bounds_parameters.dart.strong.expect
+++ b/pkg/front_end/testcases/general/bounds_parameters.dart.strong.expect
@@ -264,6 +264,6 @@
   (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → Null {};
 }
 static extension-member method Extension1|method3(lowered final core::int #this, self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void {}
-static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {s1: self::G<self::Class<dynamic>>, s2: self::G<dynamic>, s3: self::G<self::Class<dynamic>>, s4: self::G<self::Class<dynamic>>, s5: self::G<self::ConcreteClass>, s6: self::G<self::Class<self::ConcreteClass>>, s7: self::G<core::Object>, s8: self::G<core::int>}) → void
-  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {self::G<self::Class<dynamic>> s1, self::G<dynamic> s2, self::G<self::Class<dynamic>> s3, self::G<self::Class<dynamic>> s4, self::G<self::ConcreteClass> s5, self::G<self::Class<self::ConcreteClass>> s6, self::G<core::Object> s7, self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
+static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {required s1: self::G<self::Class<dynamic>>, required s2: self::G<dynamic>, required s3: self::G<self::Class<dynamic>>, required s4: self::G<self::Class<dynamic>>, required s5: self::G<self::ConcreteClass>, required s6: self::G<self::Class<self::ConcreteClass>>, required s7: self::G<core::Object>, required s8: self::G<core::int>}) → void
+  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_parameters.dart.strong.transformed.expect b/pkg/front_end/testcases/general/bounds_parameters.dart.strong.transformed.expect
index 108c0da..0cc4089 100644
--- a/pkg/front_end/testcases/general/bounds_parameters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_parameters.dart.strong.transformed.expect
@@ -264,6 +264,6 @@
   (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → Null {};
 }
 static extension-member method Extension1|method3(lowered final core::int #this, self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void {}
-static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {s1: self::G<self::Class<dynamic>>, s2: self::G<dynamic>, s3: self::G<self::Class<dynamic>>, s4: self::G<self::Class<dynamic>>, s5: self::G<self::ConcreteClass>, s6: self::G<self::Class<self::ConcreteClass>>, s7: self::G<core::Object>, s8: self::G<core::int>}) → void
-  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {self::G<self::Class<dynamic>> s1, self::G<dynamic> s2, self::G<self::Class<dynamic>> s3, self::G<self::Class<dynamic>> s4, self::G<self::ConcreteClass> s5, self::G<self::Class<self::ConcreteClass>> s6, self::G<core::Object> s7, self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
+static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {required s1: self::G<self::Class<dynamic>>, required s2: self::G<dynamic>, required s3: self::G<self::Class<dynamic>>, required s4: self::G<self::Class<dynamic>>, required s5: self::G<self::ConcreteClass>, required s6: self::G<self::Class<self::ConcreteClass>>, required s7: self::G<core::Object>, required s8: self::G<core::int>}) → void
+  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.expect b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.expect
index 108c0da..0cc4089 100644
--- a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.expect
+++ b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.expect
@@ -264,6 +264,6 @@
   (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → Null {};
 }
 static extension-member method Extension1|method3(lowered final core::int #this, self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void {}
-static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {s1: self::G<self::Class<dynamic>>, s2: self::G<dynamic>, s3: self::G<self::Class<dynamic>>, s4: self::G<self::Class<dynamic>>, s5: self::G<self::ConcreteClass>, s6: self::G<self::Class<self::ConcreteClass>>, s7: self::G<core::Object>, s8: self::G<core::int>}) → void
-  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {self::G<self::Class<dynamic>> s1, self::G<dynamic> s2, self::G<self::Class<dynamic>> s3, self::G<self::Class<dynamic>> s4, self::G<self::ConcreteClass> s5, self::G<self::Class<self::ConcreteClass>> s6, self::G<core::Object> s7, self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
+static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {required s1: self::G<self::Class<dynamic>>, required s2: self::G<dynamic>, required s3: self::G<self::Class<dynamic>>, required s4: self::G<self::Class<dynamic>>, required s5: self::G<self::ConcreteClass>, required s6: self::G<self::Class<self::ConcreteClass>>, required s7: self::G<core::Object>, required s8: self::G<core::int>}) → void
+  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.modular.expect b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.modular.expect
index 108c0da..0cc4089 100644
--- a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.modular.expect
@@ -264,6 +264,6 @@
   (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → Null {};
 }
 static extension-member method Extension1|method3(lowered final core::int #this, self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void {}
-static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {s1: self::G<self::Class<dynamic>>, s2: self::G<dynamic>, s3: self::G<self::Class<dynamic>>, s4: self::G<self::Class<dynamic>>, s5: self::G<self::ConcreteClass>, s6: self::G<self::Class<self::ConcreteClass>>, s7: self::G<core::Object>, s8: self::G<core::int>}) → void
-  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {self::G<self::Class<dynamic>> s1, self::G<dynamic> s2, self::G<self::Class<dynamic>> s3, self::G<self::Class<dynamic>> s4, self::G<self::ConcreteClass> s5, self::G<self::Class<self::ConcreteClass>> s6, self::G<core::Object> s7, self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
+static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {required s1: self::G<self::Class<dynamic>>, required s2: self::G<dynamic>, required s3: self::G<self::Class<dynamic>>, required s4: self::G<self::Class<dynamic>>, required s5: self::G<self::ConcreteClass>, required s6: self::G<self::Class<self::ConcreteClass>>, required s7: self::G<core::Object>, required s8: self::G<core::int>}) → void
+  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.outline.expect b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.outline.expect
index f4262c1..4ec5a0d 100644
--- a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.outline.expect
@@ -184,7 +184,7 @@
   ;
 static extension-member method Extension1|method3(lowered final core::int #this, self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void
   ;
-static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {s1: self::G<self::Class<dynamic>>, s2: self::G<dynamic>, s3: self::G<self::Class<dynamic>>, s4: self::G<self::Class<dynamic>>, s5: self::G<self::ConcreteClass>, s6: self::G<self::Class<self::ConcreteClass>>, s7: self::G<core::Object>, s8: self::G<core::int>}) → void
-  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {self::G<self::Class<dynamic>> s1, self::G<dynamic> s2, self::G<self::Class<dynamic>> s3, self::G<self::Class<dynamic>> s4, self::G<self::ConcreteClass> s5, self::G<self::Class<self::ConcreteClass>> s6, self::G<core::Object> s7, self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
+static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {required s1: self::G<self::Class<dynamic>>, required s2: self::G<dynamic>, required s3: self::G<self::Class<dynamic>>, required s4: self::G<self::Class<dynamic>>, required s5: self::G<self::ConcreteClass>, required s6: self::G<self::Class<self::ConcreteClass>>, required s7: self::G<core::Object>, required s8: self::G<core::int>}) → void
+  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.transformed.expect
index 108c0da..0cc4089 100644
--- a/pkg/front_end/testcases/general/bounds_parameters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bounds_parameters.dart.weak.transformed.expect
@@ -264,6 +264,6 @@
   (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → Null {};
 }
 static extension-member method Extension1|method3(lowered final core::int #this, self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void {}
-static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {s1: self::G<self::Class<dynamic>>, s2: self::G<dynamic>, s3: self::G<self::Class<dynamic>>, s4: self::G<self::Class<dynamic>>, s5: self::G<self::ConcreteClass>, s6: self::G<self::Class<self::ConcreteClass>>, s7: self::G<core::Object>, s8: self::G<core::int>}) → void
-  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {self::G<self::Class<dynamic>> s1, self::G<dynamic> s2, self::G<self::Class<dynamic>> s3, self::G<self::Class<dynamic>> s4, self::G<self::ConcreteClass> s5, self::G<self::Class<self::ConcreteClass>> s6, self::G<core::Object> s7, self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
+static extension-member method Extension1|get#method3(lowered final core::int #this) → (self::Class<dynamic>, dynamic, self::Class<dynamic>, self::Class<dynamic>, self::ConcreteClass, self::Class<self::ConcreteClass>, core::Object, core::int, {required s1: self::G<self::Class<dynamic>>, required s2: self::G<dynamic>, required s3: self::G<self::Class<dynamic>>, required s4: self::G<self::Class<dynamic>>, required s5: self::G<self::ConcreteClass>, required s6: self::G<self::Class<self::ConcreteClass>>, required s7: self::G<core::Object>, required s8: self::G<core::int>}) → void
+  return (self::Class<dynamic> t1, dynamic t2, self::Class<dynamic> t3, self::Class<dynamic> t4, self::ConcreteClass t5, self::Class<self::ConcreteClass> t6, core::Object t7, core::int t8, {required self::G<self::Class<dynamic>> s1, required self::G<dynamic> s2, required self::G<self::Class<dynamic>> s3, required self::G<self::Class<dynamic>> s4, required self::G<self::ConcreteClass> s5, required self::G<self::Class<self::ConcreteClass>> s6, required self::G<core::Object> s7, required self::G<core::int> s8}) → void => self::Extension1|method3(#this, t1, t2, t3, t4, t5, t6, t7, t8, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, s8: s8);
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect
index a1196b4..5c09372 100644
--- a/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_allocation.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  core::print(let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in new def::C::•());
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in new def::C::•());
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_allocation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_allocation.dart.weak.transformed.expect
index a1196b4..5c09372 100644
--- a/pkg/front_end/testcases/general/check_deferred_allocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_allocation.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 new def::C::•());
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in new def::C::•());
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect
index 6de38ae..eb3a1cf 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args.dart.strong.transformed.expect
@@ -7,8 +7,8 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2() as{TypeError,ForDynamic} core::int;
-  let final core::Object* #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2() as{TypeError,ForDynamic} core::int;
+  let final core::Object? #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
 }
 static method m2() → dynamic
   return 1;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args.dart.weak.transformed.expect
index 6de38ae..eb3a1cf 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args.dart.weak.transformed.expect
@@ -7,8 +7,8 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2() as{TypeError,ForDynamic} core::int;
-  let final core::Object* #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2() as{TypeError,ForDynamic} core::int;
+  let final core::Object? #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
 }
 static method m2() → dynamic
   return 1;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect
index 35dc445..7d210a9 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic async /* emittedValueType= dynamic */ {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect
index 35dc445..7d210a9 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic async /* emittedValueType= dynamic */ {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect
index fe1729e..f1f0678 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_call.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::m(3);
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::m(3);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_call.dart.weak.transformed.expect
index fe1729e..f1f0678 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_call.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::m(3);
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::m(3);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect
index 779b96f..c6bd841 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_write.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_before_write.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_write.dart.weak.transformed.expect
index 779b96f..c6bd841 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_write.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_write.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect
index f5f95cf..b20e46c 100644
--- a/pkg/front_end/testcases/general/check_deferred_read.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read.dart.strong.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){(core::num) → core::int});
 }
 
 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 f5f95cf..b20e46c 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){(core::num) → core::int});
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect
index 02b3ab0..46c6500 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.strong.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::C::y);
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::C::y);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.weak.transformed.expect
index 02b3ab0..46c6500 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_static_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_static_field.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::C::y);
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::C::y);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect
index 3406bf5..8b80f6d 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_type.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  core::print(let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in #C1);
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in #C1);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_read_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_read_type.dart.weak.transformed.expect
index 6d92713..4351c30 100644
--- a/pkg/front_end/testcases/general/check_deferred_read_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_read_type.dart.weak.transformed.expect
@@ -6,7 +6,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  core::print(let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in #C1);
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in #C1);
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect
index 3dc280b..4323850 100644
--- a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.strong.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::C::m());
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::C::m());
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.weak.transformed.expect
index 3dc280b..4323850 100644
--- a/pkg/front_end/testcases/general/check_deferred_static_method_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_static_method_call.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::C::m());
+  core::print(let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::C::m());
 }
 
 library;
diff --git a/pkg/front_end/testcases/general/deferred.dart.strong.transformed.expect b/pkg/front_end/testcases/general/deferred.dart.strong.transformed.expect
index 3c20003..e89ad3d 100644
--- a/pkg/front_end/testcases/general/deferred.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/deferred.dart.strong.transformed.expect
@@ -156,7 +156,7 @@
   constructor • = self::ET6|constructor#;
   constructor tearoff • = self::ET6|constructor#_#new#tearOff;
 }
-static field def::A a = let final core::Object* #t1 = CheckLibraryIsLoaded(d) in new def::A::•();
+static field def::A a = let final core::Object? #t1 = CheckLibraryIsLoaded(d) in new def::A::•();
 static field core::int b = 0;
 static extension-type-member method ET1|constructor#(def::A id) → self::ET1 /* erasure=def::A */ {
   lowered final self::ET1 /* erasure=def::A */ #this = id;
diff --git a/pkg/front_end/testcases/general/deferred.dart.weak.transformed.expect b/pkg/front_end/testcases/general/deferred.dart.weak.transformed.expect
index e584b16..39f24c0 100644
--- a/pkg/front_end/testcases/general/deferred.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/deferred.dart.weak.transformed.expect
@@ -156,7 +156,7 @@
   constructor • = self::ET6|constructor#;
   constructor tearoff • = self::ET6|constructor#_#new#tearOff;
 }
-static field def::A a = let final core::Object* #t1 = CheckLibraryIsLoaded(d) in new def::A::•();
+static field def::A a = let final core::Object? #t1 = CheckLibraryIsLoaded(d) in new def::A::•();
 static field core::int b = 0;
 static extension-type-member method ET1|constructor#(def::A id) → self::ET1 /* erasure=def::A */ {
   lowered final self::ET1 /* erasure=def::A */ #this = id;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.expect
index 7ee8265..9796958 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.transformed.expect
index 7ee8265..9796958 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.strong.transformed.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
index 7ee8265..9796958 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
index 7ee8265..9796958 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.modular.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
index 114b78c..6eb88de 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.outline.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   ;
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic
   ;
 
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.transformed.expect
index 7ee8265..9796958 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure.dart.weak.transformed.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.expect
index bf3388f..766b6b7 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.transformed.expect
index bf3388f..766b6b7 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.strong.transformed.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
index bf3388f..766b6b7 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
index bf3388f..766b6b7 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.modular.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
index 86dccdd..32f7946 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.outline.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   ;
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic
   ;
 
diff --git a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
index bf3388f..766b6b7 100644
--- a/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/weekly_bot_91_failure_variation_1.dart.weak.transformed.expect
@@ -10,8 +10,8 @@
 }
 static extension-member method _extension#0|_foo<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_foo::T%) → void x, {required self::_extension#0|_foo::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_foo(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_foo<T%>(#this, x, a: a);
 static method main() → dynamic {}
 
 library;
diff --git a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect
index b175e2a..2d33898 100644
--- a/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/factory_patch/main.dart.weak.outline.expect
@@ -20,7 +20,7 @@
     : self2::Class::defaultValue = defaultValue, super core::Object::•()
     ;
   @_in::patch
-  external static factory fact({has-declared-initializer core::bool defaultValue}) → self2::Class;
+  external static factory fact({core::bool defaultValue = true}) → self2::Class;
   @_in::patch
   external static factory constFact({core::bool defaultValue = true}) → self2::Class;
   @_in::patch
diff --git a/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.strong.transformed.expect b/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.strong.transformed.expect
index c697efc..8256913 100644
--- a/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.strong.transformed.expect
@@ -27,10 +27,10 @@
     return ffi::_storeInt8(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Struct1ByteInt::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C9
   static get a0#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
-  static get #sizeOf() → core::int*
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method notMain() → void {
   core::print(self::returnStruct1ByteIntNative(1.{core::int::unary-}(){() → core::int}));
@@ -55,9 +55,9 @@
   #C8 = "vm:prefer-inline"
   #C9 = core::pragma {name:#C8, options:#C4}
   #C10 = 0
-  #C11 = <core::int*>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
+  #C11 = <core::int>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
   #C12 = 1
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = "cfe:ffi:native-marker"
   #C15 = "ReturnStruct1ByteInt"
   #C16 = "org-dartlang-testcase:///ffi_external_in_part_file.dart"
diff --git a/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.weak.transformed.expect b/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.weak.transformed.expect
index f85459b..a28a0e6 100644
--- a/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/ffi_external_in_part_file.dart.weak.transformed.expect
@@ -27,10 +27,10 @@
     return ffi::_storeInt8(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Struct1ByteInt::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C9
   static get a0#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
-  static get #sizeOf() → core::int*
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method notMain() → void {
   core::print(self::returnStruct1ByteIntNative(1.{core::int::unary-}(){() → core::int}));
@@ -55,9 +55,9 @@
   #C8 = "vm:prefer-inline"
   #C9 = core::pragma {name:#C8, options:#C4}
   #C10 = 0
-  #C11 = <core::int*>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
+  #C11 = <core::int>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
   #C12 = 1
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = "cfe:ffi:native-marker"
   #C15 = "ReturnStruct1ByteInt"
   #C16 = "org-dartlang-testcase:///ffi_external_in_part_file.dart"
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect b/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect
index 3a7a39f..8c5566f 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.strong.transformed.expect
@@ -43,7 +43,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   @#C10
   static get /*isNonNullableByDefault*/ x#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C12
   get x() → core::double*
     return ffi::_loadDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::x#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
@@ -51,7 +51,7 @@
     return ffi::_storeDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::x#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #v);
   @#C10
   static get /*isNonNullableByDefault*/ y#offsetOf() → core::int
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C12
   get y() → core::double*
     return ffi::_loadDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::y#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
@@ -59,14 +59,14 @@
     return ffi::_storeDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::y#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #v);
   @#C10
   static get /*isNonNullableByDefault*/ next#offsetOf() → core::int
-    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   get next() → ffi::Pointer<self::Coordinate*>*
     return ffi::_loadPointer<self::Coordinate*>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::next#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
   set next(synthesized ffi::Pointer<self::Coordinate*>* #v) → void
     return ffi::_storePointer<self::Coordinate*>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::next#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #v);
   @#C10
-  static get /*isNonNullableByDefault*/ #sizeOf() → core::int*
-    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get /*isNonNullableByDefault*/ #sizeOf() → core::int
+    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {}
 
@@ -81,15 +81,15 @@
   #C8 = 0
   #C9 = "vm:prefer-inline"
   #C10 = core::pragma {name:#C9, options:#C5}
-  #C11 = <core::int*>[#C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8]
+  #C11 = <core::int>[#C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8]
   #C12 = ffi::Double {}
   #C13 = 8
-  #C14 = <core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
diff --git a/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect b/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect
index 62cbe1a..05a6284 100644
--- a/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/ffi_sample.dart.weak.transformed.expect
@@ -36,7 +36,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   @#C10
   static get /*isNonNullableByDefault*/ x#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C12
   get x() → core::double*
     return ffi::_loadDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::x#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
@@ -44,7 +44,7 @@
     return ffi::_storeDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::x#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #v);
   @#C10
   static get /*isNonNullableByDefault*/ y#offsetOf() → core::int
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C12
   get y() → core::double*
     return ffi::_loadDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::y#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
@@ -52,14 +52,14 @@
     return ffi::_storeDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::y#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #v);
   @#C10
   static get /*isNonNullableByDefault*/ next#offsetOf() → core::int
-    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   get next() → ffi::Pointer<self::Coordinate*>*
     return ffi::_loadPointer<self::Coordinate*>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::next#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
   set next(synthesized ffi::Pointer<self::Coordinate*>* #v) → void
     return ffi::_storePointer<self::Coordinate*>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::next#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #v);
   @#C10
-  static get /*isNonNullableByDefault*/ #sizeOf() → core::int*
-    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get /*isNonNullableByDefault*/ #sizeOf() → core::int
+    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {}
 
@@ -74,15 +74,15 @@
   #C8 = 0
   #C9 = "vm:prefer-inline"
   #C10 = core::pragma {name:#C9, options:#C5}
-  #C11 = <core::int*>[#C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8]
+  #C11 = <core::int>[#C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8]
   #C12 = ffi::Double {}
   #C13 = 8
-  #C14 = <core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
diff --git a/pkg/front_end/testcases/general/issue48402.dart.strong.expect b/pkg/front_end/testcases/general/issue48402.dart.strong.expect
index 1baf597..564722f 100644
--- a/pkg/front_end/testcases/general/issue48402.dart.strong.expect
+++ b/pkg/front_end/testcases/general/issue48402.dart.strong.expect
@@ -76,16 +76,16 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "foo";
   no-such-method-forwarder set setterVsGetter(core::num value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getterVsSetter() → core::double
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #setterVsGetter=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #getterVsSetter
   #C5 = <dynamic>[]
 }
diff --git a/pkg/front_end/testcases/general/issue48402.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue48402.dart.strong.transformed.expect
index 6fc87c9..fad7e65 100644
--- a/pkg/front_end/testcases/general/issue48402.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue48402.dart.strong.transformed.expect
@@ -76,16 +76,16 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "foo";
   no-such-method-forwarder set setterVsGetter(core::num value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getterVsSetter() → core::double
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #setterVsGetter=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #getterVsSetter
   #C5 = <dynamic>[]
 }
diff --git a/pkg/front_end/testcases/general/issue48402.dart.weak.expect b/pkg/front_end/testcases/general/issue48402.dart.weak.expect
index 1baf597..4de41e9 100644
--- a/pkg/front_end/testcases/general/issue48402.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue48402.dart.weak.expect
@@ -76,9 +76,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "foo";
   no-such-method-forwarder set setterVsGetter(core::num value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getterVsSetter() → core::double
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue48402.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue48402.dart.weak.modular.expect
index 1baf597..4de41e9 100644
--- a/pkg/front_end/testcases/general/issue48402.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue48402.dart.weak.modular.expect
@@ -76,9 +76,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "foo";
   no-such-method-forwarder set setterVsGetter(core::num value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getterVsSetter() → core::double
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue48402.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue48402.dart.weak.outline.expect
index b0039eca..f5d6fc3 100644
--- a/pkg/front_end/testcases/general/issue48402.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue48402.dart.weak.outline.expect
@@ -77,9 +77,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   no-such-method-forwarder set setterVsGetter(core::num value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#setterVsGetter=, 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(#setterVsGetter=, 2, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getterVsSetter() → core::double
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#getterVsSetter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#getterVsSetter, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue48402.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue48402.dart.weak.transformed.expect
index 6fc87c9..842defd 100644
--- a/pkg/front_end/testcases/general/issue48402.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue48402.dart.weak.transformed.expect
@@ -76,9 +76,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "foo";
   no-such-method-forwarder set setterVsGetter(core::num value) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getterVsSetter() → core::double
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::double;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue48548.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue48548.dart.weak.outline.expect
index ffa1c0c..1619ece 100644
--- a/pkg/front_end/testcases/general/issue48548.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue48548.dart.weak.outline.expect
@@ -4,7 +4,7 @@
 
 abstract class A extends core::Object {
   abstract get value() → core::int;
-  static factory •({core::int value}) → self::A /* redirection-target: self::_AImpl::• */
+  static factory •({core::int value = null}) → self::A /* redirection-target: self::_AImpl::• */
     return new self::_AImpl::•(value: value);
 }
 class _AImpl extends core::Object implements self::A {
diff --git a/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect
index cbaf35b..9474df7 100644
--- a/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect
@@ -43,8 +43,8 @@
     core::Map<core::String, core::String>? x = let final core::Map<core::String, core::Map<core::String, core::String>> #t11 = nestedMap in #t11 == null ?{core::Map<core::String, core::String>?} null : let final core::String #t12 = "hello" in let final core::Map<core::String, core::String>? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map<core::String, core::String>?} in #t13 == null ?{core::Map<core::String, core::String>} let final core::Map<core::String, core::String> #t14 = <core::String, core::String>{} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map<core::String, core::String>) → void} in #t14 : #t13{core::Map<core::String, core::String>};
   }
   {
-    let final core::bool* #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null;
-    core::int x = let final core::bool* #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int};
+    let final core::bool #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null;
+    core::int x = let final core::bool #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int};
   }
   {
     self::A a = new self::A::•();
diff --git a/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect
index cbaf35b..9474df7 100644
--- a/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect
@@ -43,8 +43,8 @@
     core::Map<core::String, core::String>? x = let final core::Map<core::String, core::Map<core::String, core::String>> #t11 = nestedMap in #t11 == null ?{core::Map<core::String, core::String>?} null : let final core::String #t12 = "hello" in let final core::Map<core::String, core::String>? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map<core::String, core::String>?} in #t13 == null ?{core::Map<core::String, core::String>} let final core::Map<core::String, core::String> #t14 = <core::String, core::String>{} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map<core::String, core::String>) → void} in #t14 : #t13{core::Map<core::String, core::String>};
   }
   {
-    let final core::bool* #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null;
-    core::int x = let final core::bool* #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int};
+    let final core::bool #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null;
+    core::int x = let final core::bool #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int};
   }
   {
     self::A a = new self::A::•();
diff --git a/pkg/front_end/testcases/general/new_as_selector.dart.strong.transformed.expect b/pkg/front_end/testcases/general/new_as_selector.dart.strong.transformed.expect
index 149a4de..f37f35a 100644
--- a/pkg/front_end/testcases/general/new_as_selector.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/new_as_selector.dart.strong.transformed.expect
@@ -399,9 +399,9 @@
   self::new;
   self::E|call<dynamic>(self::new);
   self::E|call<core::int>(self::new);
-  let final core::Object* #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
-  let final core::Object* #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
-  let final core::Object* #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
+  let final core::Object? #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
   self::E|get#new(0);
   self::E|call<dynamic>(self::E|get#new(0));
   self::E|call<core::int>(self::E|get#new(0));
diff --git a/pkg/front_end/testcases/general/new_as_selector.dart.weak.transformed.expect b/pkg/front_end/testcases/general/new_as_selector.dart.weak.transformed.expect
index 149a4de..f37f35a 100644
--- a/pkg/front_end/testcases/general/new_as_selector.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/new_as_selector.dart.weak.transformed.expect
@@ -399,9 +399,9 @@
   self::new;
   self::E|call<dynamic>(self::new);
   self::E|call<core::int>(self::new);
-  let final core::Object* #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
-  let final core::Object* #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
-  let final core::Object* #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t7 = CheckLibraryIsLoaded(prefix2) in self::c.{self::C::new}{core::int};
+  let final core::Object? #t8 = CheckLibraryIsLoaded(prefix2) in self::E|call<dynamic>(self::c.{self::C::new}{core::int});
+  let final core::Object? #t9 = CheckLibraryIsLoaded(prefix2) in self::E|call<core::int>(self::c.{self::C::new}{core::int});
   self::E|get#new(0);
   self::E|call<dynamic>(self::E|get#new(0));
   self::E|call<core::int>(self::E|get#new(0));
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.expect
index f6af482..fa85937 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.expect
@@ -21,9 +21,9 @@
     core::print("Hello from noSuchMethod");
   }
   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))){(core::Invocation) → void};
   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))){(core::Invocation) → void};
 }
 static method main() → dynamic {
   self::Y y = new self::Y::•();
@@ -32,8 +32,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///no_such_method_forwarder.dart::_foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo
 }
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.transformed.expect
index f6af482..fa85937 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.strong.transformed.expect
@@ -21,9 +21,9 @@
     core::print("Hello from noSuchMethod");
   }
   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))){(core::Invocation) → void};
   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))){(core::Invocation) → void};
 }
 static method main() → dynamic {
   self::Y y = new self::Y::•();
@@ -32,8 +32,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///no_such_method_forwarder.dart::_foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo
 }
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 f6af482..21bf1db 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
@@ -21,9 +21,9 @@
     core::print("Hello from noSuchMethod");
   }
   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))){(core::Invocation) → void};
   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))){(core::Invocation) → void};
 }
 static method main() → dynamic {
   self::Y y = new self::Y::•();
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect
index f6af482..21bf1db 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect
@@ -21,9 +21,9 @@
     core::print("Hello from noSuchMethod");
   }
   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))){(core::Invocation) → void};
   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))){(core::Invocation) → void};
 }
 static method main() → dynamic {
   self::Y y = new self::Y::•();
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 cac87fb..7745c95 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
@@ -16,9 +16,9 @@
   method noSuchMethod(core::Invocation _) → void
     ;
   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>{}))){(core::Invocation) → void};
   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>{}))){(core::Invocation) → void};
 }
 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 f6af482..21bf1db 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
@@ -21,9 +21,9 @@
     core::print("Hello from noSuchMethod");
   }
   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))){(core::Invocation) → void};
   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))){(core::Invocation) → void};
 }
 static method main() → dynamic {
   self::Y y = new self::Y::•();
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect
index ff3b66e..b7010ce 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _x() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _x(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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::•());
@@ -41,8 +41,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x=
 }
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect
index c1c6313..16e54db 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.strong.transformed.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _x() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _x(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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::•());
@@ -41,8 +41,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x=
 }
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 ff3b66e..bb2edf3 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
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _x() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _x(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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.modular.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect
index ff3b66e..bb2edf3 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _x() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _x(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 221711c..9d398ac 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
@@ -9,9 +9,9 @@
   synthetic constructor •() → self::Foo
     ;
   no-such-method-forwarder get _x() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set _x(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 c1c6313..ac6ac8f 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
@@ -10,9 +10,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _x() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _x(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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/nsm_covariance.dart.strong.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.strong.expect
index 560edb8..78611b5 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.strong.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.strong.expect
@@ -31,13 +31,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, 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
@@ -47,13 +47,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -105,13 +105,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
   synthetic constructor •() → nsm::C4
@@ -121,21 +121,21 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
   #C1 = null
   #C2 = core::_Override {}
   #C3 = #org-dartlang-testcase:///nsm_covariance.dart::_method1
-  #C4 = <core::Type*>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Type>[]
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #org-dartlang-testcase:///nsm_covariance.dart::_method2
   #C7 = <dynamic>[]
   #C8 = #a
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.strong.transformed.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.strong.transformed.expect
index 32de37d..7a88bfd 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.strong.transformed.expect
@@ -31,13 +31,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, 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
@@ -47,13 +47,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -105,13 +105,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
   synthetic constructor •() → nsm::C4
@@ -121,21 +121,21 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
   #C1 = null
   #C2 = core::_Override {}
   #C3 = #org-dartlang-testcase:///nsm_covariance.dart::_method1
-  #C4 = <core::Type*>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Type>[]
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #org-dartlang-testcase:///nsm_covariance.dart::_method2
   #C7 = <dynamic>[]
   #C8 = #a
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 560edb8..d154b16 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
@@ -31,13 +31,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, 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
@@ -47,13 +47,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -105,13 +105,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
   synthetic constructor •() → nsm::C4
@@ -121,13 +121,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect
index 560edb8..d154b16 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect
@@ -31,13 +31,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, 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
@@ -47,13 +47,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -105,13 +105,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
   synthetic constructor •() → nsm::C4
@@ -121,13 +121,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 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 96d4263..07db9aa 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
@@ -28,13 +28,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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-by-declaration core::int a, covariant-by-class core::int b) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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-by-declaration core::int a, covariant-by-class core::int b}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -43,13 +43,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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-by-declaration core::int x, covariant-by-class core::int y) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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-by-declaration core::int a, covariant-by-class core::int b}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
   ;
@@ -97,13 +97,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class 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>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a, covariant-by-class 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}))){(core::Invocation) → dynamic};
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
   synthetic constructor •() → nsm::C4
@@ -112,13 +112,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class 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>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class 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>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a, covariant-by-class 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}))){(core::Invocation) → dynamic};
 }
 
 
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 32de37d..63f7034 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
@@ -31,13 +31,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, 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
@@ -47,13 +47,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>(#C5)));
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d})));
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b})));
 }
 static method main() → dynamic {}
 
@@ -105,13 +105,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
   synthetic constructor •() → nsm::C4
@@ -121,13 +121,13 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
   no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method /* signature-type: ({a: core::int, b: core::int, c: core::int, d: core::int}) → void */ _method2({core::int? a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class 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>(#C5))){(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>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, 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, #C7, core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect
index a67917d..edfa168 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _f() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
@@ -37,7 +37,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///private_method_tearoff.dart::_f
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect
index a67917d..edfa168 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _f() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
@@ -37,7 +37,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///private_method_tearoff.dart::_f
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 a67917d..544916d 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
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _f() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect
index a67917d..544916d 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _f() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
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 636fde7..53fe665 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
@@ -9,7 +9,7 @@
   synthetic constructor •() → self::Foo
     ;
   no-such-method-forwarder method _f() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 a67917d..544916d 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
@@ -10,7 +10,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _f() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class Baz extends self::Foo {
   synthetic constructor •() → self::Baz
diff --git a/pkg/front_end/testcases/general/redirecting_default_values.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_default_values.dart.weak.outline.expect
index 3dac0d4..3641175 100644
--- a/pkg/front_end/testcases/general/redirecting_default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_default_values.dart.weak.outline.expect
@@ -11,25 +11,25 @@
     return new self::Class::positional();
   static factory redirect2a(core::int a) → self::Class /* redirection-target: self::Class::positional */
     return new self::Class::positional(a);
-  static factory redirect3a([core::int a]) → self::Class /* redirection-target: self::Class::positional */
+  static factory redirect3a([core::int a = null]) → self::Class /* redirection-target: self::Class::positional */
     return new self::Class::positional(a);
-  static factory redirect4a(core::int a, [core::int b]) → self::Class /* redirection-target: self::Class::positional */
+  static factory redirect4a(core::int a, [core::int b = null]) → self::Class /* redirection-target: self::Class::positional */
     return new self::Class::positional(a, b);
-  static factory redirect5a([core::int a, core::int b]) → self::Class /* redirection-target: self::Class::positional */
+  static factory redirect5a([core::int a = null, core::int b = null]) → self::Class /* redirection-target: self::Class::positional */
     return new self::Class::positional(a, b);
-  static factory redirect6a([core::int a, has-declared-initializer core::int b]) → self::Class /* redirection-target: self::Class::positional */
+  static factory redirect6a([core::int a = null, core::int b = 2]) → self::Class /* redirection-target: self::Class::positional */
     return new self::Class::positional(a, b);
   static factory redirect1b() → self::Class /* redirection-target: self::Class::named */
     return new self::Class::named();
-  static factory redirect2b({core::int a}) → self::Class /* redirection-target: self::Class::named */
+  static factory redirect2b({core::int a = null}) → self::Class /* redirection-target: self::Class::named */
     return new self::Class::named(a: a);
-  static factory redirect3b({core::int b}) → self::Class /* redirection-target: self::Class::named */
+  static factory redirect3b({core::int b = null}) → self::Class /* redirection-target: self::Class::named */
     return new self::Class::named(b: b);
-  static factory redirect4b({core::int a, core::int b}) → self::Class /* redirection-target: self::Class::named */
+  static factory redirect4b({core::int a = null, core::int b = null}) → self::Class /* redirection-target: self::Class::named */
     return new self::Class::named(a: a, b: b);
-  static factory redirect5b({core::int b, core::int a}) → self::Class /* redirection-target: self::Class::named */
+  static factory redirect5b({core::int b = null, core::int a = null}) → self::Class /* redirection-target: self::Class::named */
     return new self::Class::named(b: b, a: a);
-  static factory redirect6b({has-declared-initializer core::int a, core::int b}) → self::Class /* redirection-target: self::Class::named */
+  static factory redirect6b({core::int a = 1, core::int b = null}) → self::Class /* redirection-target: self::Class::named */
     return new self::Class::named(a: a, b: b);
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect
index 54b1142..e57dbb8 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_default_value.dart.weak.outline.expect
@@ -6,7 +6,7 @@
   final field core::int field;
   constructor •([core::int field = 42]) → self::A
     ;
-  static factory redirect([has-declared-initializer core::int field]) → self::A /* redirection-target: self::A::• */
+  static factory redirect([core::int field = 87]) → self::A /* redirection-target: self::A::• */
     return new self::A::•(field);
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.strong.expect b/pkg/front_end/testcases/general/super_nsm.dart.strong.expect
index ddda9c2..4b38aa3 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.strong.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
@@ -34,7 +34,7 @@
 
 constants  {
   #C1 = #interfaceMethod
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect
index ddda9c2..4b38aa3 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
@@ -34,7 +34,7 @@
 
 constants  {
   #C1 = #interfaceMethod
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 ddda9c2..e2d7262d 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect
index ddda9c2..e2d7262d 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
index 911e414..22378ee 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
@@ -13,7 +13,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   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>{}))){(core::Invocation) → 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 ddda9c2..e2d7262d 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
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return "C";
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect
index 524d598d..20e5b577 100644
--- a/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/tear_off_patch/main.dart.weak.outline.expect
@@ -20,12 +20,12 @@
   @_in::patch
   external constructor •({core::bool defaultValue = true, required self2::Class::T% value}) → self2::Class<self2::Class::T%>;
   @_in::patch
-  external static factory fact<T extends core::Object? = dynamic>({has-declared-initializer core::bool defaultValue, required self2::Class::fact::T% value}) → self2::Class<self2::Class::fact::T%>;
+  external static factory fact<T extends core::Object? = dynamic>({core::bool defaultValue = true, required self2::Class::fact::T% value}) → self2::Class<self2::Class::fact::T%>;
   @_in::patch
-  external static factory redirect<T extends core::Object? = dynamic>({core::bool defaultValue, required self2::Class::redirect::T% value}) → self2::Class<self2::Class::redirect::T%> /* redirection-target: self2::ClassImpl::•<self2::Class::redirect::T%>*/
+  external static factory redirect<T extends core::Object? = dynamic>({core::bool defaultValue = null, required self2::Class::redirect::T% value}) → self2::Class<self2::Class::redirect::T%> /* redirection-target: self2::ClassImpl::•<self2::Class::redirect::T%>*/
     return new self2::ClassImpl::•<self2::Class::redirect::T%>(defaultValue: defaultValue, value: value);
   @_in::patch
-  external static factory redirect2<T extends core::Object? = dynamic>({core::bool defaultValue, required self2::Class::redirect2::T% value}) → self2::Class<self2::Class::redirect2::T%> /* redirection-target: self2::ClassImpl::patched<self2::Class::redirect2::T%>*/
+  external static factory redirect2<T extends core::Object? = dynamic>({core::bool defaultValue = null, required self2::Class::redirect2::T% value}) → self2::Class<self2::Class::redirect2::T%> /* redirection-target: self2::ClassImpl::patched<self2::Class::redirect2::T%>*/
     return new self2::ClassImpl::patched<self2::Class::redirect2::T%>(defaultValue: defaultValue, value: value);
 }
 @_in::patch
diff --git a/pkg/front_end/testcases/general/top_level_vs_local_inference.dart.weak.outline.expect b/pkg/front_end/testcases/general/top_level_vs_local_inference.dart.weak.outline.expect
index 093d365..d18b7d1 100644
--- a/pkg/front_end/testcases/general/top_level_vs_local_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/top_level_vs_local_inference.dart.weak.outline.expect
@@ -25,7 +25,7 @@
 class TableSchema<F extends self::Column, C extends self::TableContext> extends core::Object {
   constructor _() → self::TableSchema<self::TableSchema::F, self::TableSchema::C>
     ;
-  static factory •<F extends self::Column, C extends self::TableContext>({required core::Iterable<self::TableSchema::•::F> fields, self::TableSchema::•::C? context}) → self::TableSchema<self::TableSchema::•::F, self::TableSchema::•::C>
+  static factory •<F extends self::Column, C extends self::TableContext>({required core::Iterable<self::TableSchema::•::F> fields, self::TableSchema::•::C? context = null}) → self::TableSchema<self::TableSchema::•::F, self::TableSchema::•::C>
     ;
 }
 static field self::TableSchema<dynamic, self::TableContext> schema;
diff --git a/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect b/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect
index c3ef99e..5e5039a 100644
--- a/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect
@@ -22,10 +22,10 @@
       return dart.ffi::_storeUint32(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C9
     static get yy#offsetOf() → dart.core::int
-      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -47,13 +47,13 @@
     get xx() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set xx(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C9
     static get xx#offsetOf() → dart.core::int
-      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -67,9 +67,9 @@
   #C8 = "vm:prefer-inline"
   #C9 = dart.core::pragma {name:#C8, options:#C4}
   #C10 = 0
-  #C11 = <dart.core::int*>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
+  #C11 = <dart.core::int>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
   #C12 = 4
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = TypeLiteralConstant(lib::Y)
   #C15 = <dart.core::Type>[#C14]
   #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
diff --git a/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect b/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect
index c3ef99e..5e5039a 100644
--- a/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect
@@ -22,10 +22,10 @@
       return dart.ffi::_storeUint32(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C9
     static get yy#offsetOf() → dart.core::int
-      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -47,13 +47,13 @@
     get xx() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set xx(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C9
     static get xx#offsetOf() → dart.core::int
-      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C11.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -67,9 +67,9 @@
   #C8 = "vm:prefer-inline"
   #C9 = dart.core::pragma {name:#C8, options:#C4}
   #C10 = 0
-  #C11 = <dart.core::int*>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
+  #C11 = <dart.core::int>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
   #C12 = 4
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = TypeLiteralConstant(lib::Y)
   #C15 = <dart.core::Type>[#C14]
   #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
diff --git a/pkg/front_end/testcases/incremental/crash_06.yaml.world.1.expect b/pkg/front_end/testcases/incremental/crash_06.yaml.world.1.expect
index 4093561..dbbbe2b 100644
--- a/pkg/front_end/testcases/incremental/crash_06.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/crash_06.yaml.world.1.expect
@@ -35,13 +35,13 @@
     get yy() → str::Y
       return new str::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, str::A::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set yy(synthesized str::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, str::A::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, str::A::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C10
     static get yy#offsetOf() → dart.core::int
-      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
   final class Y extends dart.ffi::Struct {
     synthetic constructor •() → str::Y
@@ -56,8 +56,8 @@
     external get zz() → invalid-type;
     external set zz(synthesized invalid-type #externalFieldValue) → void;
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -68,7 +68,7 @@
   #C5 = dart.ffi::_FfiStructLayout {fieldTypes:#C3, packing:#C4}
   #C6 = dart.core::pragma {name:#C1, options:#C5}
   #C7 = 0
-  #C8 = <dart.core::int*>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
+  #C8 = <dart.core::int>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C4}
 }
diff --git a/pkg/front_end/testcases/incremental/crash_06.yaml.world.2.expect b/pkg/front_end/testcases/incremental/crash_06.yaml.world.2.expect
index 4093561..dbbbe2b 100644
--- a/pkg/front_end/testcases/incremental/crash_06.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/crash_06.yaml.world.2.expect
@@ -35,13 +35,13 @@
     get yy() → str::Y
       return new str::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, str::A::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set yy(synthesized str::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, str::A::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, str::A::yy#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C10
     static get yy#offsetOf() → dart.core::int
-      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
   final class Y extends dart.ffi::Struct {
     synthetic constructor •() → str::Y
@@ -56,8 +56,8 @@
     external get zz() → invalid-type;
     external set zz(synthesized invalid-type #externalFieldValue) → void;
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C8.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -68,7 +68,7 @@
   #C5 = dart.ffi::_FfiStructLayout {fieldTypes:#C3, packing:#C4}
   #C6 = dart.core::pragma {name:#C1, options:#C5}
   #C7 = 0
-  #C8 = <dart.core::int*>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
+  #C8 = <dart.core::int>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C4}
 }
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 02e8bd0..2429dd7 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
@@ -32,16 +32,16 @@
     }
     @#C10
     static get x#offsetOf() → dart.core::int
-      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get y#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get next#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -67,14 +67,14 @@
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C5}
   #C11 = 0
-  #C12 = <dart.core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <dart.core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 8
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <dart.core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <dart.core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
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 b822180..ecbfece 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
@@ -32,16 +32,16 @@
     }
     @#C10
     static get x#offsetOf() → dart.core::int
-      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get y#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get next#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -71,14 +71,14 @@
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C5}
   #C11 = 0
-  #C12 = <dart.core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <dart.core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 8
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <dart.core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <dart.core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
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 8d28502..b8aaa72 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
@@ -32,16 +32,16 @@
     }
     @#C10
     static get x#offsetOf() → dart.core::int
-      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get y#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get next#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -68,14 +68,14 @@
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C5}
   #C11 = 0
-  #C12 = <dart.core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <dart.core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 8
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <dart.core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <dart.core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.1.expect b/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.1.expect
index 2748646..18bfef3 100644
--- a/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.1.expect
@@ -38,7 +38,7 @@
       dart.core::print(invocation.{dart.core::Invocation::positionalArguments}{dart.core::List<dynamic>});
     }
     no-such-method-forwarder method m([covariant-by-declaration has-declared-initializer dart.core::String a]) → dynamic
-      return this.{main::C::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C3, 0, #C4, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(a)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C5))){(dart.core::Invocation) → void} as{TypeError,ForDynamic} dynamic;
+      return this.{main::C::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C3, 0, #C4, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(a)), dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C5))){(dart.core::Invocation) → void} as{TypeError,ForDynamic} dynamic;
   }
   static method main() → dynamic {
     main::C c = new main::C::•();
diff --git a/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.2.expect b/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.2.expect
index 955aedb..0432ab2 100644
--- a/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/initializer_not_copied.yaml.world.2.expect
@@ -38,7 +38,7 @@
       dart.core::print(invocation.{dart.core::Invocation::positionalArguments}{dart.core::List<dynamic>});
     }
     no-such-method-forwarder method m([covariant-by-declaration dart.core::String a = #C1]) → dynamic
-      return this.{main::C::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C3, 0, #C4, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(a)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C5))){(dart.core::Invocation) → void} as{TypeError,ForDynamic} dynamic;
+      return this.{main::C::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C3, 0, #C4, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(a)), dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C5))){(dart.core::Invocation) → void} as{TypeError,ForDynamic} dynamic;
   }
   static method main() → dynamic {
     main::C c = new main::C::•();
diff --git a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect
index a1daf01..9333d3c 100644
--- a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect
@@ -29,22 +29,22 @@
     get blah() → a::NestedStruct
       return new a::NestedStruct::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::StructA::blah#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set blah(synthesized a::NestedStruct #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::StructA::blah#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::StructA::blah#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C12
     static get a1#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get a2#offsetOf() → dart.core::int
-      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get a3#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get blah#offsetOf() → dart.core::int
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
   @#C24
   final class NestedStruct extends dart.ffi::Struct {
@@ -71,16 +71,16 @@
       return dart.ffi::_storePointer<dart.ffi::Void>(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::NestedStruct::n3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C12
     static get n1#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get n2#offsetOf() → dart.core::int
-      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get n3#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
-    static get #sizeOf() → dart.core::int*
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///b.dart" as b {
@@ -104,13 +104,13 @@
     get b1() → a::StructA
       return new a::StructA::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, b::StructB::b1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set b1(synthesized a::StructA #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, b::StructB::b1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, b::StructB::b1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C12
     static get b1#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
   static method periodic() → void {
     dart.core::print(b::StructB::#sizeOf);
@@ -129,18 +129,18 @@
   #C7 = dart.core::pragma {name:#C1, options:#C6}
   #C8 = 12
   #C9 = 24
-  #C10 = <dart.core::int*>[#C8, #C9, #C8, #C9, #C9, #C9, #C9, #C9, #C8, #C9, #C9, #C8, #C9, #C8, #C9, #C8, #C9, #C9, #C9, #C9, #C8, #C9]
+  #C10 = <dart.core::int>[#C8, #C9, #C8, #C9, #C9, #C9, #C9, #C9, #C8, #C9, #C9, #C8, #C9, #C8, #C9, #C8, #C9, #C9, #C9, #C9, #C8, #C9]
   #C11 = "vm:prefer-inline"
   #C12 = dart.core::pragma {name:#C11, options:#C5}
   #C13 = 0
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 4
   #C16 = 8
-  #C17 = <dart.core::int*>[#C15, #C16, #C15, #C16, #C16, #C16, #C16, #C16, #C15, #C16, #C16, #C15, #C16, #C15, #C16, #C15, #C16, #C16, #C16, #C16, #C15, #C16]
+  #C17 = <dart.core::int>[#C15, #C16, #C15, #C16, #C16, #C16, #C16, #C16, #C15, #C16, #C16, #C15, #C16, #C15, #C16, #C15, #C16, #C16, #C16, #C16, #C15, #C16]
   #C18 = 16
-  #C19 = <dart.core::int*>[#C16, #C18, #C16, #C18, #C18, #C18, #C18, #C18, #C16, #C18, #C18, #C16, #C18, #C16, #C18, #C16, #C18, #C18, #C18, #C18, #C16, #C18]
+  #C19 = <dart.core::int>[#C16, #C18, #C16, #C18, #C18, #C18, #C18, #C18, #C16, #C18, #C18, #C16, #C18, #C16, #C18, #C16, #C18, #C18, #C18, #C18, #C16, #C18]
   #C20 = 48
-  #C21 = <dart.core::int*>[#C9, #C20, #C9, #C20, #C20, #C20, #C20, #C20, #C9, #C20, #C20, #C9, #C20, #C9, #C20, #C9, #C20, #C20, #C20, #C20, #C9, #C20]
+  #C21 = <dart.core::int>[#C9, #C20, #C9, #C20, #C20, #C20, #C20, #C20, #C9, #C20, #C20, #C9, #C20, #C9, #C20, #C9, #C20, #C20, #C20, #C20, #C9, #C20]
   #C22 = <dart.core::Type>[#C2, #C2, #C2]
   #C23 = dart.ffi::_FfiStructLayout {fieldTypes:#C22, packing:#C5}
   #C24 = dart.core::pragma {name:#C1, options:#C23}
diff --git a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect
index a1daf01..9333d3c 100644
--- a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect
@@ -29,22 +29,22 @@
     get blah() → a::NestedStruct
       return new a::NestedStruct::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::StructA::blah#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set blah(synthesized a::NestedStruct #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::StructA::blah#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::StructA::blah#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C12
     static get a1#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get a2#offsetOf() → dart.core::int
-      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get a3#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get blah#offsetOf() → dart.core::int
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
   @#C24
   final class NestedStruct extends dart.ffi::Struct {
@@ -71,16 +71,16 @@
       return dart.ffi::_storePointer<dart.ffi::Void>(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, a::NestedStruct::n3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C12
     static get n1#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get n2#offsetOf() → dart.core::int
-      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C17.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
     static get n3#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
-    static get #sizeOf() → dart.core::int*
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///b.dart" as b {
@@ -104,13 +104,13 @@
     get b1() → a::StructA
       return new a::StructA::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, b::StructB::b1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set b1(synthesized a::StructA #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, b::StructB::b1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, b::StructB::b1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C12
     static get b1#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C12
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
   static method periodic() → void {
     dart.core::print(b::StructB::#sizeOf);
@@ -129,18 +129,18 @@
   #C7 = dart.core::pragma {name:#C1, options:#C6}
   #C8 = 12
   #C9 = 24
-  #C10 = <dart.core::int*>[#C8, #C9, #C8, #C9, #C9, #C9, #C9, #C9, #C8, #C9, #C9, #C8, #C9, #C8, #C9, #C8, #C9, #C9, #C9, #C9, #C8, #C9]
+  #C10 = <dart.core::int>[#C8, #C9, #C8, #C9, #C9, #C9, #C9, #C9, #C8, #C9, #C9, #C8, #C9, #C8, #C9, #C8, #C9, #C9, #C9, #C9, #C8, #C9]
   #C11 = "vm:prefer-inline"
   #C12 = dart.core::pragma {name:#C11, options:#C5}
   #C13 = 0
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 4
   #C16 = 8
-  #C17 = <dart.core::int*>[#C15, #C16, #C15, #C16, #C16, #C16, #C16, #C16, #C15, #C16, #C16, #C15, #C16, #C15, #C16, #C15, #C16, #C16, #C16, #C16, #C15, #C16]
+  #C17 = <dart.core::int>[#C15, #C16, #C15, #C16, #C16, #C16, #C16, #C16, #C15, #C16, #C16, #C15, #C16, #C15, #C16, #C15, #C16, #C16, #C16, #C16, #C15, #C16]
   #C18 = 16
-  #C19 = <dart.core::int*>[#C16, #C18, #C16, #C18, #C18, #C18, #C18, #C18, #C16, #C18, #C18, #C16, #C18, #C16, #C18, #C16, #C18, #C18, #C18, #C18, #C16, #C18]
+  #C19 = <dart.core::int>[#C16, #C18, #C16, #C18, #C18, #C18, #C18, #C18, #C16, #C18, #C18, #C16, #C18, #C16, #C18, #C16, #C18, #C18, #C18, #C18, #C16, #C18]
   #C20 = 48
-  #C21 = <dart.core::int*>[#C9, #C20, #C9, #C20, #C20, #C20, #C20, #C20, #C9, #C20, #C20, #C9, #C20, #C9, #C20, #C9, #C20, #C20, #C20, #C20, #C9, #C20]
+  #C21 = <dart.core::int>[#C9, #C20, #C9, #C20, #C20, #C20, #C20, #C20, #C9, #C20, #C20, #C9, #C20, #C9, #C20, #C9, #C20, #C20, #C20, #C20, #C9, #C20]
   #C22 = <dart.core::Type>[#C2, #C2, #C2]
   #C23 = dart.ffi::_FfiStructLayout {fieldTypes:#C22, packing:#C5}
   #C24 = dart.core::pragma {name:#C1, options:#C23}
diff --git a/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.1.expect
index 1a334b6..e7870c8 100644
--- a/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.1.expect
@@ -25,13 +25,13 @@
       : super dart.core::Object::•()
       ;
     no-such-method-forwarder get _#A#x() → dart.core::int?
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4)));
     no-such-method-forwarder set _#A#x(dart.core::int? value) → void
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C5, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C5, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4)));
     no-such-method-forwarder get _#A#x#isSet() → dart.core::bool
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4)));
     no-such-method-forwarder set _#A#x#isSet(dart.core::bool value) → void
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C7, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C7, 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_change_but_changed_type_02.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.2.expect
index 1a334b6..e7870c8 100644
--- a/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_change_but_changed_type_02.yaml.world.2.expect
@@ -25,13 +25,13 @@
       : super dart.core::Object::•()
       ;
     no-such-method-forwarder get _#A#x() → dart.core::int?
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4)));
     no-such-method-forwarder set _#A#x(dart.core::int? value) → void
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C5, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C5, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4)));
     no-such-method-forwarder get _#A#x#isSet() → dart.core::bool
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4)));
     no-such-method-forwarder set _#A#x#isSet(dart.core::bool value) → void
-      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C7, 2, #C2, dart.core::List::unmodifiable<dynamic>(dart.core::_GrowableList::_literal1<dynamic>(value)), dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4)));
+      return throw{for-error-handling} dart.core::NoSuchMethodError::withInvocation(this, new dart.core::_InvocationMirror::_withType(#C7, 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.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
index c2c4824..fcfa468 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
@@ -23,11 +23,11 @@
       dart.core::print("noSouchMethod!");
     }
     no-such-method-forwarder method method() → void
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 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(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic};
     no-such-method-forwarder get getter() → dart.core::bool
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 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(#C5, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic} as{TypeError,ForDynamic} dart.core::bool;
     no-such-method-forwarder set 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))){(dart.core::Invocation) → dynamic};
   }
   class Foo2 extends dart.core::Object implements lib1::Bar {
     synthetic constructor •() → main::Foo2
@@ -37,15 +37,15 @@
       dart.core::print("noSouchMethod!");
     }
     no-such-method-forwarder get 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))){(dart.core::Invocation) → dynamic} as{TypeError,ForDynamic} dart.core::bool;
     no-such-method-forwarder set 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))){(dart.core::Invocation) → dynamic};
     no-such-method-forwarder method method() → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 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(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic};
     no-such-method-forwarder get getter() → dart.core::bool
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 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(#C5, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic} as{TypeError,ForDynamic} dart.core::bool;
     no-such-method-forwarder set 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))){(dart.core::Invocation) → dynamic};
   }
 }
 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 6eef64c..5151c6d 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
@@ -23,11 +23,11 @@
       dart.core::print("noSouchMethod!!");
     }
     no-such-method-forwarder method method() → void
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 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(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic};
     no-such-method-forwarder get getter() → dart.core::bool
-      return this.{main::Foo1::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 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(#C5, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic} as{TypeError,ForDynamic} dart.core::bool;
     no-such-method-forwarder set 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))){(dart.core::Invocation) → dynamic};
   }
   class Foo2 extends dart.core::Object implements lib1::Bar {
     synthetic constructor •() → main::Foo2
@@ -37,15 +37,15 @@
       dart.core::print("noSouchMethod!!");
     }
     no-such-method-forwarder get 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))){(dart.core::Invocation) → dynamic} as{TypeError,ForDynamic} dart.core::bool;
     no-such-method-forwarder set 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))){(dart.core::Invocation) → dynamic};
     no-such-method-forwarder method method() → void
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 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(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic};
     no-such-method-forwarder get getter() → dart.core::bool
-      return this.{main::Foo2::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C5, 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(#C5, 1, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → dynamic} as{TypeError,ForDynamic} dart.core::bool;
     no-such-method-forwarder set 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))){(dart.core::Invocation) → dynamic};
   }
 }
 constants  {
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 02e8bd0..2429dd7 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
@@ -32,16 +32,16 @@
     }
     @#C10
     static get x#offsetOf() → dart.core::int
-      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get y#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get next#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -67,14 +67,14 @@
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C5}
   #C11 = 0
-  #C12 = <dart.core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <dart.core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 8
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <dart.core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <dart.core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
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 93bf616..13ddc90 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
@@ -32,16 +32,16 @@
     }
     @#C10
     static get x#offsetOf() → dart.core::int
-      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get y#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get next#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -68,14 +68,14 @@
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C5}
   #C11 = 0
-  #C12 = <dart.core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <dart.core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 8
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <dart.core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <dart.core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
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 a78d52e..d30e95f 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
@@ -33,16 +33,16 @@
     }
     @#C10
     static get x#offsetOf() → dart.core::int
-      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C12.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get y#offsetOf() → dart.core::int
-      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C14.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
     static get next#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C10
-    static get #sizeOf() → dart.core::int*
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -69,14 +69,14 @@
   #C9 = "vm:prefer-inline"
   #C10 = dart.core::pragma {name:#C9, options:#C5}
   #C11 = 0
-  #C12 = <dart.core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <dart.core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 8
-  #C14 = <dart.core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <dart.core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <dart.core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <dart.core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect
index a2b7be7..3e4c503 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect
@@ -34,16 +34,16 @@
       return dart.ffi::_storeUint64(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::y3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get y1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y2#offsetOf() → dart.core::int
-      return #C15.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C15.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y3#offsetOf() → dart.core::int
-      return #C18.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C18.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -65,11 +65,11 @@
     get x1() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x1(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     get x2() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x2(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C8
     get x3() → dart.core::int
       return dart.ffi::_loadUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
@@ -78,16 +78,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get x1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x2#offsetOf() → dart.core::int
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x3#offsetOf() → dart.core::int
-      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -103,25 +103,25 @@
   #C10 = "vm:prefer-inline"
   #C11 = dart.core::pragma {name:#C10, options:#C5}
   #C12 = 0
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 1
-  #C15 = <dart.core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <dart.core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = 8
   #C17 = 4
-  #C18 = <dart.core::int*>[#C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
+  #C18 = <dart.core::int>[#C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
   #C19 = 16
   #C20 = 12
-  #C21 = <dart.core::int*>[#C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
+  #C21 = <dart.core::int>[#C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
   #C22 = TypeLiteralConstant(lib::Y)
   #C23 = <dart.core::Type>[#C22, #C22, #C2]
   #C24 = dart.ffi::_FfiStructLayout {fieldTypes:#C23, packing:#C5}
   #C25 = dart.core::pragma {name:#C1, options:#C24}
   #C26 = 32
   #C27 = 24
-  #C28 = <dart.core::int*>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
+  #C28 = <dart.core::int>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
   #C29 = 40
   #C30 = 28
-  #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
+  #C31 = <dart.core::int>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect
index 975d996..21fde01 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect
@@ -34,16 +34,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::y2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get y1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y3#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y2#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -65,11 +65,11 @@
     get x1() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x1(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     get x2() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x2(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C8
     get x3() → dart.core::int
       return dart.ffi::_loadUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
@@ -78,16 +78,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get x1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x2#offsetOf() → dart.core::int
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x3#offsetOf() → dart.core::int
-      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -103,25 +103,25 @@
   #C10 = "vm:prefer-inline"
   #C11 = dart.core::pragma {name:#C10, options:#C5}
   #C12 = 0
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 8
   #C15 = 4
-  #C16 = <dart.core::int*>[#C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C16 = <dart.core::int>[#C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C17 = 16
   #C18 = 12
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
   #C20 = 24
-  #C21 = <dart.core::int*>[#C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
+  #C21 = <dart.core::int>[#C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
   #C22 = TypeLiteralConstant(lib::Y)
   #C23 = <dart.core::Type>[#C22, #C22, #C2]
   #C24 = dart.ffi::_FfiStructLayout {fieldTypes:#C23, packing:#C5}
   #C25 = dart.core::pragma {name:#C1, options:#C24}
   #C26 = 48
   #C27 = 32
-  #C28 = <dart.core::int*>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
+  #C28 = <dart.core::int>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
   #C29 = 56
   #C30 = 36
-  #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
+  #C31 = <dart.core::int>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect
index a2b7be7..3e4c503 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect
@@ -34,16 +34,16 @@
       return dart.ffi::_storeUint64(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::y3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get y1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y2#offsetOf() → dart.core::int
-      return #C15.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C15.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y3#offsetOf() → dart.core::int
-      return #C18.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C18.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -65,11 +65,11 @@
     get x1() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x1(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     get x2() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x2(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C8
     get x3() → dart.core::int
       return dart.ffi::_loadUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
@@ -78,16 +78,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get x1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x2#offsetOf() → dart.core::int
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x3#offsetOf() → dart.core::int
-      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -103,25 +103,25 @@
   #C10 = "vm:prefer-inline"
   #C11 = dart.core::pragma {name:#C10, options:#C5}
   #C12 = 0
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 1
-  #C15 = <dart.core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <dart.core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = 8
   #C17 = 4
-  #C18 = <dart.core::int*>[#C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
+  #C18 = <dart.core::int>[#C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
   #C19 = 16
   #C20 = 12
-  #C21 = <dart.core::int*>[#C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
+  #C21 = <dart.core::int>[#C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
   #C22 = TypeLiteralConstant(lib::Y)
   #C23 = <dart.core::Type>[#C22, #C22, #C2]
   #C24 = dart.ffi::_FfiStructLayout {fieldTypes:#C23, packing:#C5}
   #C25 = dart.core::pragma {name:#C1, options:#C24}
   #C26 = 32
   #C27 = 24
-  #C28 = <dart.core::int*>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
+  #C28 = <dart.core::int>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
   #C29 = 40
   #C30 = 28
-  #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
+  #C31 = <dart.core::int>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect
index 975d996..21fde01 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect
@@ -34,16 +34,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::y2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get y1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y3#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y2#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -65,11 +65,11 @@
     get x1() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x1(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     get x2() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x2(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C8
     get x3() → dart.core::int
       return dart.ffi::_loadUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
@@ -78,16 +78,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get x1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x2#offsetOf() → dart.core::int
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x3#offsetOf() → dart.core::int
-      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -103,25 +103,25 @@
   #C10 = "vm:prefer-inline"
   #C11 = dart.core::pragma {name:#C10, options:#C5}
   #C12 = 0
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 8
   #C15 = 4
-  #C16 = <dart.core::int*>[#C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C16 = <dart.core::int>[#C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C17 = 16
   #C18 = 12
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
   #C20 = 24
-  #C21 = <dart.core::int*>[#C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
+  #C21 = <dart.core::int>[#C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
   #C22 = TypeLiteralConstant(lib::Y)
   #C23 = <dart.core::Type>[#C22, #C22, #C2]
   #C24 = dart.ffi::_FfiStructLayout {fieldTypes:#C23, packing:#C5}
   #C25 = dart.core::pragma {name:#C1, options:#C24}
   #C26 = 48
   #C27 = 32
-  #C28 = <dart.core::int*>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
+  #C28 = <dart.core::int>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
   #C29 = 56
   #C30 = 36
-  #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
+  #C31 = <dart.core::int>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect
index e4155ef..1398f60 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect
@@ -34,16 +34,16 @@
       return dart.ffi::_storeUint64(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::y3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get y1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y2#offsetOf() → dart.core::int
-      return #C15.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C15.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y3#offsetOf() → dart.core::int
-      return #C18.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C18.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -287,11 +287,11 @@
     get x1() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x1(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     get x2() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x2(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C8
     get x3() → dart.core::int
       return dart.ffi::_loadUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
@@ -300,16 +300,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get x1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x2#offsetOf() → dart.core::int
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x3#offsetOf() → dart.core::int
-      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -325,25 +325,25 @@
   #C10 = "vm:prefer-inline"
   #C11 = dart.core::pragma {name:#C10, options:#C5}
   #C12 = 0
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 1
-  #C15 = <dart.core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <dart.core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = 8
   #C17 = 4
-  #C18 = <dart.core::int*>[#C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
+  #C18 = <dart.core::int>[#C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C17, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
   #C19 = 16
   #C20 = 12
-  #C21 = <dart.core::int*>[#C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
+  #C21 = <dart.core::int>[#C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C20, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
   #C22 = TypeLiteralConstant(lib::Y)
   #C23 = <dart.core::Type>[#C22, #C22, #C2]
   #C24 = dart.ffi::_FfiStructLayout {fieldTypes:#C23, packing:#C5}
   #C25 = dart.core::pragma {name:#C1, options:#C24}
   #C26 = 32
   #C27 = 24
-  #C28 = <dart.core::int*>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
+  #C28 = <dart.core::int>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
   #C29 = 40
   #C30 = 28
-  #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
+  #C31 = <dart.core::int>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect
index 12fdbe8..d95635a 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect
@@ -34,16 +34,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, lib::Y::y2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get y1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y3#offsetOf() → dart.core::int
-      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C16.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get y2#offsetOf() → dart.core::int
-      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C19.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///lib2.dart" as lib2 {
@@ -287,11 +287,11 @@
     get x1() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x1(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x1#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     get x2() → lib::Y
       return new lib::Y::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set x2(synthesized lib::Y #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x2#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C8
     get x3() → dart.core::int
       return dart.ffi::_loadUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
@@ -300,16 +300,16 @@
       return dart.ffi::_storeUint8(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::x3#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue);
     @#C11
     static get x1#offsetOf() → dart.core::int
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x2#offsetOf() → dart.core::int
-      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C21.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
     static get x3#offsetOf() → dart.core::int
-      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C28.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C11
-    static get #sizeOf() → dart.core::int*
-      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C31.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -325,25 +325,25 @@
   #C10 = "vm:prefer-inline"
   #C11 = dart.core::pragma {name:#C10, options:#C5}
   #C12 = 0
-  #C13 = <dart.core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <dart.core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 8
   #C15 = 4
-  #C16 = <dart.core::int*>[#C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C16 = <dart.core::int>[#C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C15, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C17 = 16
   #C18 = 12
-  #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <dart.core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
   #C20 = 24
-  #C21 = <dart.core::int*>[#C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
+  #C21 = <dart.core::int>[#C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C17, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
   #C22 = TypeLiteralConstant(lib::Y)
   #C23 = <dart.core::Type>[#C22, #C22, #C2]
   #C24 = dart.ffi::_FfiStructLayout {fieldTypes:#C23, packing:#C5}
   #C25 = dart.core::pragma {name:#C1, options:#C24}
   #C26 = 48
   #C27 = 32
-  #C28 = <dart.core::int*>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
+  #C28 = <dart.core::int>[#C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C27, #C26, #C26, #C26, #C26, #C26, #C26, #C26, #C26]
   #C29 = 56
   #C30 = 36
-  #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
+  #C31 = <dart.core::int>[#C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
 
 
diff --git a/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.1.expect
index 33f0b9e..8d9a135 100644
--- a/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.1.expect
@@ -16,7 +16,7 @@
       dart.core::print("Hello from noSuchMethod");
     }
     no-such-method-forwarder method foo() → void
-      return this.{lib1::Y::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation) → void};
+      return this.{lib1::Y::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → void};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.2.expect
index 33f0b9e..8d9a135 100644
--- a/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_such_method_forwarder.yaml.world.2.expect
@@ -16,7 +16,7 @@
       dart.core::print("Hello from noSuchMethod");
     }
     no-such-method-forwarder method foo() → void
-      return this.{lib1::Y::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol*, dynamic>(#C4))){(dart.core::Invocation) → void};
+      return this.{lib1::Y::noSuchMethod}(new dart.core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(#C4))){(dart.core::Invocation) → void};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
diff --git a/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect
index c37868d..03a951b 100644
--- a/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.1.expect
@@ -22,10 +22,10 @@
       return dart.ffi::Pointer::fromAddress<dart.ffi::IntPtr>(dart.ffi::_loadAbiSpecificInt<dart.ffi::IntPtr>(this.{lib::COMObject::lpVtbl}{dart.ffi::Pointer<dart.ffi::IntPtr>}, #C7));
     @#C9
     static get lpVtbl#offsetOf() → dart.core::int
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -47,13 +47,13 @@
     get xx() → lib::COMObject
       return new lib::COMObject::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set xx(synthesized lib::COMObject #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C9
     static get xx#offsetOf() → dart.core::int
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -66,10 +66,10 @@
   #C7 = 0
   #C8 = "vm:prefer-inline"
   #C9 = dart.core::pragma {name:#C8, options:#C4}
-  #C10 = <dart.core::int*>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
+  #C10 = <dart.core::int>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
   #C11 = 4
   #C12 = 8
-  #C13 = <dart.core::int*>[#C11, #C12, #C11, #C12, #C12, #C12, #C12, #C12, #C11, #C12, #C12, #C11, #C12, #C11, #C12, #C11, #C12, #C12, #C12, #C12, #C11, #C12]
+  #C13 = <dart.core::int>[#C11, #C12, #C11, #C12, #C12, #C12, #C12, #C12, #C11, #C12, #C12, #C11, #C12, #C11, #C12, #C11, #C12, #C12, #C12, #C12, #C11, #C12]
   #C14 = TypeLiteralConstant(lib::COMObject)
   #C15 = <dart.core::Type>[#C14]
   #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
diff --git a/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect
index c37868d..03a951b 100644
--- a/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/regress_46004.yaml.world.2.expect
@@ -22,10 +22,10 @@
       return dart.ffi::Pointer::fromAddress<dart.ffi::IntPtr>(dart.ffi::_loadAbiSpecificInt<dart.ffi::IntPtr>(this.{lib::COMObject::lpVtbl}{dart.ffi::Pointer<dart.ffi::IntPtr>}, #C7));
     @#C9
     static get lpVtbl#offsetOf() → dart.core::int
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 library from "org-dartlang-test:///main.dart" as main {
@@ -47,13 +47,13 @@
     get xx() → lib::COMObject
       return new lib::COMObject::#fromTypedDataBase(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num});
     set xx(synthesized lib::COMObject #externalFieldValue) → void
-      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*});
+      return dart.ffi::_memCopy(this.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, main::X::xx#offsetOf.{dart.core::num::+}(this.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}){(dart.core::num) → dart.core::num}, #externalFieldValue.{dart.ffi::_Compound::_typedDataBase}{dart.core::Object}, #externalFieldValue.{dart.ffi::_Compound::_offsetInBytes}{dart.core::int}, #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int});
     @#C9
     static get xx#offsetOf() → dart.core::int
-      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+      return #C10.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
     @#C9
-    static get #sizeOf() → dart.core::int*
-      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int*};
+    static get #sizeOf() → dart.core::int
+      return #C13.{dart.core::List::[]}(dart.ffi::_abi()){(dart.core::int) → dart.core::int};
   }
 }
 constants  {
@@ -66,10 +66,10 @@
   #C7 = 0
   #C8 = "vm:prefer-inline"
   #C9 = dart.core::pragma {name:#C8, options:#C4}
-  #C10 = <dart.core::int*>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
+  #C10 = <dart.core::int>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
   #C11 = 4
   #C12 = 8
-  #C13 = <dart.core::int*>[#C11, #C12, #C11, #C12, #C12, #C12, #C12, #C12, #C11, #C12, #C12, #C11, #C12, #C11, #C12, #C11, #C12, #C12, #C12, #C12, #C11, #C12]
+  #C13 = <dart.core::int>[#C11, #C12, #C11, #C12, #C12, #C12, #C12, #C12, #C11, #C12, #C12, #C11, #C12, #C11, #C12, #C11, #C12, #C12, #C12, #C12, #C11, #C12]
   #C14 = TypeLiteralConstant(lib::COMObject)
   #C15 = <dart.core::Type>[#C14]
   #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
index d13d810..91e8a31 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
index 5f0c02b2..6d1caae 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 d13d810..a4c1f5e 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect
index d13d810..a4c1f5e 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
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 5d48d45..4feb744 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → 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 5f0c02b2..05a8e61 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
index ca8cb62..aaa7551 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
index 762ba04..9dd30be 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 ca8cb62..a7ffb70 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect
index ca8cb62..a7ffb70 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
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 2df64a0..798c2d5 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → 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 762ba04..d92e49d 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
index 0fad180..25e9a3d 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
index df747bc..d822c7f 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 0fad180..9b47f0d 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect
index 0fad180..9b47f0d 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
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 4c938d1..0439a6ae 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → 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 df747bc..2bcb151 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
index 2d20c34..f355086 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
index 19f45d9..f8b8ce0 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 2d20c34..90ab7fa 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect
index 2d20c34..90ab7fa 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
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 edb2ae2..0b44942 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → 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 19f45d9..cb6a817 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<dynamic> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
index 320a573..47cd84f 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
index 9f56b05..729cbcb 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 320a573..2d5d66a 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect
index 320a573..2d5d66a 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
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 da20f7a..0a12e26 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → 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 9f56b05..3020780 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await new self::MyFuture::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
index 6e9ba59..d61f9e7 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
index 9fc8abf..6c4777f 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 6e9ba59..40bfb97 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect
index 6e9ba59..40bfb97 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
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 6facc1c..330f1bd 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → 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 9fc8abf..a4d7233 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<dynamic> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> async /* emittedValueType= core::int */ => await asy::Future::value<core::int>(3)){((dynamic) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
index f54040c..b936d32 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
index c2d073b..7d2e947 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 1ef69dd..4d4b0b6 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect
index 1ef69dd..4d4b0b6 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
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 99001ec..c442b5c 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 0ce07b5..5e530d4 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.expect
index 568ce3f..3b84252 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.transformed.expect
index 532f57d..e94389a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.expect
index 568ce3f..335a6e9 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.modular.expect
index 568ce3f..335a6e9 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.outline.expect
index 1881b7d..1a9b49f 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.transformed.expect
index 532f57d..9de084c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.expect
index ead1e74..909da56 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.transformed.expect
index 05adeef..7613e2e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.expect
index ead1e74..793cb34 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.modular.expect
index ead1e74..793cb34 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.outline.expect
index a482866..d93222c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.transformed.expect
index 05adeef..a97b4e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_2.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.expect
index 9faa298..2a6f381 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.transformed.expect
index 0f81d0b..33eece1 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.expect
index 9faa298..462cfb7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.modular.expect
index 9faa298..462cfb7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.outline.expect
index 35327e5..b8986be 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.transformed.expect
index 0f81d0b..458c8b4 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_3.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.expect
index f891d54..1eee2a9 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.transformed.expect
index 499b653..286a2e52 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.expect
index f891d54..6134123 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.modular.expect
index f891d54..6134123 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.outline.expect
index 6c65a8d..c8ceb70 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.transformed.expect
index 499b653..73a1056 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_4.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::bool> f) → void {
   self::MyFuture<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → self::MyFuture<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.expect
index df14585..046aadd 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.transformed.expect
index 165033e..201d030 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.expect
index df14585..94cc50c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.modular.expect
index df14585..94cc50c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.outline.expect
index 77d2214..5bbcb9b 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.transformed.expect
index 165033e..a397a81 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_5.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await new self::MyFuture::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.expect
index 7e3245b..afdd753 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.transformed.expect
index 564b824..bdbd7a3 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.expect
index 7e3245b..6c4da2a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.modular.expect
index 7e3245b..6c4da2a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.outline.expect
index bc02840..d0301dd 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.transformed.expect
index 564b824..4014f50 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional2_6.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(asy::Future<core::bool> f) → void {
   asy::Future<core::int> t1 = f.{asy::Future::then}<core::int>((core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ => x ?{core::int} 2 : await asy::Future::value<core::int>(3)){((core::bool) → FutureOr<core::int>, {onError: core::Function?}) → asy::Future<core::int>};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
index 629c5d0..e814d63 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
index f752298..4175137 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 133a694..f9268e6c 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect
index 133a694..f9268e6c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
index 9b994b8..c1549db 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 c723df6..5086d73 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
index 412389b..77d2da2 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
index d322ffd..73121bf 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 e99fdf4..e0526fe 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect
index e99fdf4..e0526fe 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
index 92be834..c71d691 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 6ceb1f0..743ef6e 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
index 1ab6437..cc0f42c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
index 42363f5..88a5eaf 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 b093d9f..1b14e43 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect
index b093d9f..1b14e43 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
index 7300a44..cdb699e 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 1038cbe..a18ec21 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
index f428cdb..e2f3328 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
index 13b49b7..83af130 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 9b86ff7..3ad3891 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect
index 9b86ff7..3ad3891 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
index de22e51..04c0c78 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 dcd2d38..caff54f 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
index d23c0ff..16dd3c7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
index 6b9fe12..7b706e9 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 d897085..f64a43e 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect
index d897085..f64a43e 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
index fa13ddf..14f5037 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 68cd6e2..da3a112 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   asy::Future<core::bool*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
index a484d23..188d4ac 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
index 0d67169..42dad1e 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
@@ -55,10 +55,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 faf9a60..81729a7 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,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect
index faf9a60..81729a7 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
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 790a788..e5ec15d 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 558e375..3031a85 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
@@ -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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method test() → void {
   self::MyFuture<core::int*>* f;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.expect
index 9c43925..1704dcf 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::int> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::int x) → asy::Future<core::int> async /* emittedValueType= core::int */ => 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>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.transformed.expect
index 66d02f1..5d0edba 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::int> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::int x) → asy::Future<core::int> async /* emittedValueType= core::int */ => 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>};
@@ -38,10 +38,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.expect
index 9c43925..cde13da 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::int> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::int x) → asy::Future<core::int> async /* emittedValueType= core::int */ => 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.modular.expect
index 9c43925..cde13da 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::int> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::int x) → asy::Future<core::int> async /* emittedValueType= core::int */ => 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.outline.expect
index 598b468..c5bc896 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::int> f) → void
   ;
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.transformed.expect
index 66d02f1..c5957d2 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull2.dart.weak.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test(self::MyFuture<core::int> f) → void {
   asy::Future<core::int> t1 = f.{self::MyFuture::then}<core::int>((core::int x) → asy::Future<core::int> async /* emittedValueType= core::int */ => 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
index 2527d3f..86edcffa 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
@@ -47,10 +47,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
index 2b21b95..77528a2 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
@@ -47,10 +47,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 2527d3f..89f8b94 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
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.modular.expect
index 2527d3f..89f8b94 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.modular.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
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 eb8527f..73fe8ff 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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 2b21b95..0886192 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
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
index 983bbe5..55dd2d0 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
@@ -45,10 +45,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
index 12edc97..86b3c58 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
@@ -45,10 +45,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 983bbe5..493c360 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
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.modular.expect
index 983bbe5..493c360 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.modular.expect
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
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 bf5c8e0..1b9f68c 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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 12edc97..282d496 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
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method test() → 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
index ee8dfec..69b8b70 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} 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>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
index 3b705fa..04e9c6b 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} 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>};
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 ee8dfec..55430fc 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
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} 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>};
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.modular.expect
index ee8dfec..55430fc 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.modular.expect
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} 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>};
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 ffe040c..9b0a4232 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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 3b705fa..93fddff 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
@@ -23,13 +23,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} 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>};
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
index 03618f2..df59f6f 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
@@ -53,10 +53,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
index af1d3d1..49ec692 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
@@ -53,10 +53,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 880b980..d87e88c 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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect
index 880b980..d87e88c 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError,ForLegacy} 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 10aabca..4364fd1 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 8a3ddd0..af6b44e 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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.expect
index e884bd7..a4eca9b 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : asy::Future::value<core::int>(42);
@@ -50,10 +50,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.transformed.expect
index 23e57f6..0ac46cb 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.strong.transformed.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : asy::Future::value<core::int>(42);
@@ -50,10 +50,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.expect
index e884bd7..192fa31 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : asy::Future::value<core::int>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.modular.expect
index e884bd7..192fa31 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.modular.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : asy::Future::value<core::int>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.outline.expect
index 4a59604..767efd8 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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_conditional2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.transformed.expect
index 23e57f6..9912793 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional2.dart.weak.transformed.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : asy::Future::value<core::int>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
index f4739cd..2bd879f 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
@@ -53,10 +53,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
index a130354..f8a398e 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.strong.transformed.expect
@@ -31,13 +31,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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
@@ -53,10 +53,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 09de7d9..18a754f 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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect
index 09de7d9..18a754f 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError,ForLegacy} 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 801b58a..58a355d 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 = #C1}) → 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → 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,ForLegacy} 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,ForLegacy} 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 e14eb04..9ea3fc9 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,ForLegacy} 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,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic,ForLegacy} asy::Stream<self::MyFuture::T*>*;
   no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* 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,ForLegacy} 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,ForLegacy} asy::Future<self::MyFuture::T*>*;
 }
 static method g1(core::bool* x) → asy::Future<core::int*>* async /* emittedValueType= core::int* */ {
   return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError,ForLegacy} FutureOr<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.expect
index 79cf45b..b0308ef 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : new self::MyFuture::value<core::int>(42);
@@ -50,10 +50,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.transformed.expect
index ab03ea2..0969340 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.strong.transformed.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : new self::MyFuture::value<core::int>(42);
@@ -50,10 +50,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.expect
index 79cf45b..1b936ef 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : new self::MyFuture::value<core::int>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.modular.expect
index 79cf45b..1b936ef 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.modular.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : new self::MyFuture::value<core::int>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.outline.expect
index c3043c4..5beaf28 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.outline.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.transformed.expect
index ab03ea2..92b07f0 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2_2.dart.weak.transformed.expect
@@ -24,13 +24,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static method g1(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
   return x ?{FutureOr<core::int>} 42 : new self::MyFuture::value<core::int>(42);
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
index f4adf02..8091614 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
index 70db043..8159998 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 f4adf02..29baa94 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
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect
index f4adf02..29baa94 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
index 3b1a5d3..b6570f2 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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 70db043..9183923 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
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
index e2f5313..fbad3dc 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 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>};
@@ -37,10 +37,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
index e28b8ff..f033301 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 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>};
@@ -37,10 +37,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 e2f5313..342f9f8 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 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>};
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect
index e2f5313..342f9f8 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 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>};
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 2d294db..b3f9b37 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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 e28b8ff..6d52314 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field self::MyFuture<dynamic> f = throw "";
 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>};
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
index 93b674c..f5816c7 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
index 5e29ff6..b61bec4 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
@@ -46,10 +46,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 93b674c..764b257 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
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect
index 93b674c..764b257 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
index dd35954..1ef138d 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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 5e29ff6..0bd6b7c 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
@@ -22,13 +22,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'String' can't be assigned to the parameter type 'FutureOr<int>?'.
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
index 071ec38..b4359952 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 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>};
@@ -37,10 +37,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
index 56d4b2a..f4e32e2 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 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>};
@@ -37,10 +37,10 @@
 constants  {
   #C1 = null
   #C2 = #catchError
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = #test
   #C5 = #whenComplete
-  #C6 = <core::Symbol*, dynamic>{}
+  #C6 = <core::Symbol, dynamic>{}
   #C7 = #asStream
   #C8 = <dynamic>[]
   #C9 = #timeout
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 071ec38..111403c 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 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>};
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect
index 071ec38..111403c 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 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>};
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 c334c4e..a160585 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = null}) → self::MyFuture<self::MyFuture::then::S%>
     ;
   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(#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}))){(core::Invocation) → dynamic} 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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? FutureOr<self::MyFuture::T%>onTimeout = #C1}) → 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}))){(core::Invocation) → dynamic} 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 56d4b2a..6dedb31 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
@@ -15,13 +15,13 @@
   method then<S extends core::Object? = dynamic>((self::MyFuture::T%) → FutureOr<self::MyFuture::then::S%>f, {core::Function? onError = #C1}) → self::MyFuture<self::MyFuture::then::S%>
     return throw "";
   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}))){(core::Invocation) → dynamic} 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>(#C6))){(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>(#C6))){(core::Invocation) → 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(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
+    return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T%>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T%>;
 }
 static field asy::Future<dynamic> f = throw "";
 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>};
diff --git a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.expect b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.expect
index d2ec188..63c7343 100644
--- a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.expect
@@ -147,24 +147,24 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → T% => self::_extension#0|_laterUnnamedParameter<T%>(#this, x, y);
 static extension-member method _extension#0|_laterUnnamedParameterDependsOnNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T%) → void x, {required self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
 static extension-member method _extension#0|_earlierUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_earlierUnnamedParameter::T%) → void x, self::_extension#0|_earlierUnnamedParameter::T% y) → void
   return throw "";
 static extension-member method _extension#0|get#_earlierUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, T%) → void
   return <T extends core::Object? = dynamic>((T%) → void x, T% y) → void => self::_extension#0|_earlierUnnamedParameter<T%>(#this, x, y);
-static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_laterNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_laterNamedParameter::T% a, required (self::_extension#0|_laterNamedParameter::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: (T%) → void, b: T%}) → void
-  return <T extends core::Object? = dynamic>({(T%) → void a, T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: (T%) → void, required b: T%}) → void
+  return <T extends core::Object? = dynamic>({required (T%) → void a, required T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_earlierNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required (self::_extension#0|_earlierNamedParameter::T%) → void a, required self::_extension#0|_earlierNamedParameter::T% b}) → void
   return throw "";
 static extension-member method _extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T% b, {required (self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T%) → void a}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {a: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>(T% b, {(T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
+static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {required a: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>(T% b, {required (T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
 static extension-member method _extension#0|_propagateToReturnType<T extends core::Object? = dynamic, U extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_propagateToReturnType::T% x, (self::_extension#0|_propagateToReturnType::T%) → self::_extension#0|_propagateToReturnType::U% y) → self::_extension#0|_propagateToReturnType::U%
   return throw "";
 static extension-member method _extension#0|get#_propagateToReturnType(lowered final core::int #this) → <T extends core::Object? = dynamic, U extends core::Object? = dynamic>(T%, (T%) → U%) → U%
@@ -215,16 +215,16 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesized<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedNamed::T% a, required (self::_extension#0|_parenthesizedNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_parenthesizedTwice<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_parenthesizedTwice::T% x, (self::_extension#0|_parenthesizedTwice::T%) → void y) → void
   return throw "";
 static extension-member method _extension#0|get#_parenthesizedTwice(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, (T%) → void) → void
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesizedTwice<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedTwiceNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedTwiceNamed::T% a, required (self::_extension#0|_parenthesizedTwiceNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.transformed.expect
index 51fa5c4..f0c73f9 100644
--- a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.strong.transformed.expect
@@ -147,24 +147,24 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → T% => self::_extension#0|_laterUnnamedParameter<T%>(#this, x, y);
 static extension-member method _extension#0|_laterUnnamedParameterDependsOnNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T%) → void x, {required self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
 static extension-member method _extension#0|_earlierUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_earlierUnnamedParameter::T%) → void x, self::_extension#0|_earlierUnnamedParameter::T% y) → void
   return throw "";
 static extension-member method _extension#0|get#_earlierUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, T%) → void
   return <T extends core::Object? = dynamic>((T%) → void x, T% y) → void => self::_extension#0|_earlierUnnamedParameter<T%>(#this, x, y);
-static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_laterNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_laterNamedParameter::T% a, required (self::_extension#0|_laterNamedParameter::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: (T%) → void, b: T%}) → void
-  return <T extends core::Object? = dynamic>({(T%) → void a, T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: (T%) → void, required b: T%}) → void
+  return <T extends core::Object? = dynamic>({required (T%) → void a, required T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_earlierNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required (self::_extension#0|_earlierNamedParameter::T%) → void a, required self::_extension#0|_earlierNamedParameter::T% b}) → void
   return throw "";
 static extension-member method _extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T% b, {required (self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T%) → void a}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {a: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>(T% b, {(T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
+static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {required a: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>(T% b, {required (T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
 static extension-member method _extension#0|_propagateToReturnType<T extends core::Object? = dynamic, U extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_propagateToReturnType::T% x, (self::_extension#0|_propagateToReturnType::T%) → self::_extension#0|_propagateToReturnType::U% y) → self::_extension#0|_propagateToReturnType::U%
   return throw "";
 static extension-member method _extension#0|get#_propagateToReturnType(lowered final core::int #this) → <T extends core::Object? = dynamic, U extends core::Object? = dynamic>(T%, (T%) → U%) → U%
@@ -215,16 +215,16 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesized<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedNamed::T% a, required (self::_extension#0|_parenthesizedNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_parenthesizedTwice<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_parenthesizedTwice::T% x, (self::_extension#0|_parenthesizedTwice::T%) → void y) → void
   return throw "";
 static extension-member method _extension#0|get#_parenthesizedTwice(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, (T%) → void) → void
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesizedTwice<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedTwiceNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedTwiceNamed::T% a, required (self::_extension#0|_parenthesizedTwiceNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.expect b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.expect
index d2ec188..63c7343 100644
--- a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.expect
@@ -147,24 +147,24 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → T% => self::_extension#0|_laterUnnamedParameter<T%>(#this, x, y);
 static extension-member method _extension#0|_laterUnnamedParameterDependsOnNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T%) → void x, {required self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
 static extension-member method _extension#0|_earlierUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_earlierUnnamedParameter::T%) → void x, self::_extension#0|_earlierUnnamedParameter::T% y) → void
   return throw "";
 static extension-member method _extension#0|get#_earlierUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, T%) → void
   return <T extends core::Object? = dynamic>((T%) → void x, T% y) → void => self::_extension#0|_earlierUnnamedParameter<T%>(#this, x, y);
-static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_laterNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_laterNamedParameter::T% a, required (self::_extension#0|_laterNamedParameter::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: (T%) → void, b: T%}) → void
-  return <T extends core::Object? = dynamic>({(T%) → void a, T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: (T%) → void, required b: T%}) → void
+  return <T extends core::Object? = dynamic>({required (T%) → void a, required T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_earlierNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required (self::_extension#0|_earlierNamedParameter::T%) → void a, required self::_extension#0|_earlierNamedParameter::T% b}) → void
   return throw "";
 static extension-member method _extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T% b, {required (self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T%) → void a}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {a: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>(T% b, {(T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
+static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {required a: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>(T% b, {required (T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
 static extension-member method _extension#0|_propagateToReturnType<T extends core::Object? = dynamic, U extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_propagateToReturnType::T% x, (self::_extension#0|_propagateToReturnType::T%) → self::_extension#0|_propagateToReturnType::U% y) → self::_extension#0|_propagateToReturnType::U%
   return throw "";
 static extension-member method _extension#0|get#_propagateToReturnType(lowered final core::int #this) → <T extends core::Object? = dynamic, U extends core::Object? = dynamic>(T%, (T%) → U%) → U%
@@ -215,16 +215,16 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesized<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedNamed::T% a, required (self::_extension#0|_parenthesizedNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_parenthesizedTwice<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_parenthesizedTwice::T% x, (self::_extension#0|_parenthesizedTwice::T%) → void y) → void
   return throw "";
 static extension-member method _extension#0|get#_parenthesizedTwice(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, (T%) → void) → void
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesizedTwice<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedTwiceNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedTwiceNamed::T% a, required (self::_extension#0|_parenthesizedTwiceNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.modular.expect b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.modular.expect
index d2ec188..63c7343 100644
--- a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.modular.expect
@@ -147,24 +147,24 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → T% => self::_extension#0|_laterUnnamedParameter<T%>(#this, x, y);
 static extension-member method _extension#0|_laterUnnamedParameterDependsOnNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T%) → void x, {required self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
 static extension-member method _extension#0|_earlierUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_earlierUnnamedParameter::T%) → void x, self::_extension#0|_earlierUnnamedParameter::T% y) → void
   return throw "";
 static extension-member method _extension#0|get#_earlierUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, T%) → void
   return <T extends core::Object? = dynamic>((T%) → void x, T% y) → void => self::_extension#0|_earlierUnnamedParameter<T%>(#this, x, y);
-static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_laterNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_laterNamedParameter::T% a, required (self::_extension#0|_laterNamedParameter::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: (T%) → void, b: T%}) → void
-  return <T extends core::Object? = dynamic>({(T%) → void a, T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: (T%) → void, required b: T%}) → void
+  return <T extends core::Object? = dynamic>({required (T%) → void a, required T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_earlierNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required (self::_extension#0|_earlierNamedParameter::T%) → void a, required self::_extension#0|_earlierNamedParameter::T% b}) → void
   return throw "";
 static extension-member method _extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T% b, {required (self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T%) → void a}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {a: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>(T% b, {(T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
+static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {required a: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>(T% b, {required (T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
 static extension-member method _extension#0|_propagateToReturnType<T extends core::Object? = dynamic, U extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_propagateToReturnType::T% x, (self::_extension#0|_propagateToReturnType::T%) → self::_extension#0|_propagateToReturnType::U% y) → self::_extension#0|_propagateToReturnType::U%
   return throw "";
 static extension-member method _extension#0|get#_propagateToReturnType(lowered final core::int #this) → <T extends core::Object? = dynamic, U extends core::Object? = dynamic>(T%, (T%) → U%) → U%
@@ -215,16 +215,16 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesized<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedNamed::T% a, required (self::_extension#0|_parenthesizedNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_parenthesizedTwice<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_parenthesizedTwice::T% x, (self::_extension#0|_parenthesizedTwice::T%) → void y) → void
   return throw "";
 static extension-member method _extension#0|get#_parenthesizedTwice(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, (T%) → void) → void
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesizedTwice<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedTwiceNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedTwiceNamed::T% a, required (self::_extension#0|_parenthesizedTwiceNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.outline.expect b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.outline.expect
index ba03313..c7e2cf1 100644
--- a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.outline.expect
@@ -94,24 +94,24 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → T% => self::_extension#0|_laterUnnamedParameter<T%>(#this, x, y);
 static extension-member method _extension#0|_laterUnnamedParameterDependsOnNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T%) → void x, {required self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T% a}) → void
   ;
-static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
 static extension-member method _extension#0|_earlierUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_earlierUnnamedParameter::T%) → void x, self::_extension#0|_earlierUnnamedParameter::T% y) → void
   ;
 static extension-member method _extension#0|get#_earlierUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, T%) → void
   return <T extends core::Object? = dynamic>((T%) → void x, T% y) → void => self::_extension#0|_earlierUnnamedParameter<T%>(#this, x, y);
-static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_laterNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_laterNamedParameter::T% a, required (self::_extension#0|_laterNamedParameter::T%) → void b}) → void
   ;
-static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: (T%) → void, b: T%}) → void
-  return <T extends core::Object? = dynamic>({(T%) → void a, T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: (T%) → void, required b: T%}) → void
+  return <T extends core::Object? = dynamic>({required (T%) → void a, required T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_earlierNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required (self::_extension#0|_earlierNamedParameter::T%) → void a, required self::_extension#0|_earlierNamedParameter::T% b}) → void
   ;
 static extension-member method _extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T% b, {required (self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T%) → void a}) → void
   ;
-static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {a: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>(T% b, {(T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
+static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {required a: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>(T% b, {required (T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
 static extension-member method _extension#0|_propagateToReturnType<T extends core::Object? = dynamic, U extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_propagateToReturnType::T% x, (self::_extension#0|_propagateToReturnType::T%) → self::_extension#0|_propagateToReturnType::U% y) → self::_extension#0|_propagateToReturnType::U%
   ;
 static extension-member method _extension#0|get#_propagateToReturnType(lowered final core::int #this) → <T extends core::Object? = dynamic, U extends core::Object? = dynamic>(T%, (T%) → U%) → U%
@@ -162,15 +162,15 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesized<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedNamed::T% a, required (self::_extension#0|_parenthesizedNamed::T%) → void b}) → void
   ;
-static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_parenthesizedTwice<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_parenthesizedTwice::T% x, (self::_extension#0|_parenthesizedTwice::T%) → void y) → void
   ;
 static extension-member method _extension#0|get#_parenthesizedTwice(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, (T%) → void) → void
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesizedTwice<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedTwiceNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedTwiceNamed::T% a, required (self::_extension#0|_parenthesizedTwiceNamed::T%) → void b}) → void
   ;
-static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.transformed.expect
index 51fa5c4..f0c73f9 100644
--- a/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_update_1/horizontal_inference_extension_method.dart.weak.transformed.expect
@@ -147,24 +147,24 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → T% => self::_extension#0|_laterUnnamedParameter<T%>(#this, x, y);
 static extension-member method _extension#0|_laterUnnamedParameterDependsOnNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T%) → void x, {required self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter::T% a}) → void
   return throw "";
-static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {a: T%}) → void
-  return <T extends core::Object? = dynamic>((T%) → void x, {T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
+static extension-member method _extension#0|get#_laterUnnamedParameterDependsOnNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, {required a: T%}) → void
+  return <T extends core::Object? = dynamic>((T%) → void x, {required T% a}) → void => self::_extension#0|_laterUnnamedParameterDependsOnNamedParameter<T%>(#this, x, a: a);
 static extension-member method _extension#0|_earlierUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, (self::_extension#0|_earlierUnnamedParameter::T%) → void x, self::_extension#0|_earlierUnnamedParameter::T% y) → void
   return throw "";
 static extension-member method _extension#0|get#_earlierUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>((T%) → void, T%) → void
   return <T extends core::Object? = dynamic>((T%) → void x, T% y) → void => self::_extension#0|_earlierUnnamedParameter<T%>(#this, x, y);
-static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_laterNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_laterNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_laterNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_laterNamedParameter::T% a, required (self::_extension#0|_laterNamedParameter::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: (T%) → void, b: T%}) → void
-  return <T extends core::Object? = dynamic>({(T%) → void a, T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_earlierNamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: (T%) → void, required b: T%}) → void
+  return <T extends core::Object? = dynamic>({required (T%) → void a, required T% b}) → void => self::_extension#0|_earlierNamedParameter<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_earlierNamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, {required (self::_extension#0|_earlierNamedParameter::T%) → void a, required self::_extension#0|_earlierNamedParameter::T% b}) → void
   return throw "";
 static extension-member method _extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T% b, {required (self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter::T%) → void a}) → void
   return throw "";
-static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {a: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>(T% b, {(T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
+static extension-member method _extension#0|get#_earlierNamedParameterDependsOnUnnamedParameter(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, {required a: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>(T% b, {required (T%) → void a}) → void => self::_extension#0|_earlierNamedParameterDependsOnUnnamedParameter<T%>(#this, b, a: a);
 static extension-member method _extension#0|_propagateToReturnType<T extends core::Object? = dynamic, U extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_propagateToReturnType::T% x, (self::_extension#0|_propagateToReturnType::T%) → self::_extension#0|_propagateToReturnType::U% y) → self::_extension#0|_propagateToReturnType::U%
   return throw "";
 static extension-member method _extension#0|get#_propagateToReturnType(lowered final core::int #this) → <T extends core::Object? = dynamic, U extends core::Object? = dynamic>(T%, (T%) → U%) → U%
@@ -215,16 +215,16 @@
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesized<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedNamed::T% a, required (self::_extension#0|_parenthesizedNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedNamed<T%>(#this, a: a, b: b);
 static extension-member method _extension#0|_parenthesizedTwice<T extends core::Object? = dynamic>(lowered final core::int #this, self::_extension#0|_parenthesizedTwice::T% x, (self::_extension#0|_parenthesizedTwice::T%) → void y) → void
   return throw "";
 static extension-member method _extension#0|get#_parenthesizedTwice(lowered final core::int #this) → <T extends core::Object? = dynamic>(T%, (T%) → void) → void
   return <T extends core::Object? = dynamic>(T% x, (T%) → void y) → void => self::_extension#0|_parenthesizedTwice<T%>(#this, x, y);
 static extension-member method _extension#0|_parenthesizedTwiceNamed<T extends core::Object? = dynamic>(lowered final core::int #this, {required self::_extension#0|_parenthesizedTwiceNamed::T% a, required (self::_extension#0|_parenthesizedTwiceNamed::T%) → void b}) → void
   return throw "";
-static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({a: T%, b: (T%) → void}) → void
-  return <T extends core::Object? = dynamic>({T% a, (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
+static extension-member method _extension#0|get#_parenthesizedTwiceNamed(lowered final core::int #this) → <T extends core::Object? = dynamic>({required a: T%, required b: (T%) → void}) → void
+  return <T extends core::Object? = dynamic>({required T% a, required (T%) → void b}) → void => self::_extension#0|_parenthesizedTwiceNamed<T%>(#this, a: a, b: b);
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.expect
index cc7a4844..bb80d79 100644
--- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.expect
@@ -26,7 +26,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f1() → core::int?
-    return this.{self::E::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::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 class F extends core::Object implements fie::C {
   synthetic constructor •() → self::F
@@ -36,7 +36,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f2() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
 }
 static method acceptsInt(core::int x) → void {}
 static method testConflictsWithNoSuchMethodForwarder(self::C c) → void {
@@ -67,8 +67,8 @@
 constants  {
   #C1 = core::_Override {}
   #C2 = #org-dartlang-testcase:///field_promotion_and_no_such_method.dart::_f1
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = <dynamic>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #org-dartlang-testcase:///field_promotion_and_no_such_method.dart::_f2
 }
diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.transformed.expect
index e0855ba..3da5a9a 100644
--- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.strong.transformed.expect
@@ -26,7 +26,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f1() → core::int?
-    return this.{self::E::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::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 class F extends core::Object implements fie::C {
   synthetic constructor •() → self::F
@@ -36,7 +36,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f2() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
 }
 static method acceptsInt(core::int x) → void {}
 static method testConflictsWithNoSuchMethodForwarder(self::C c) → void {
@@ -67,8 +67,8 @@
 constants  {
   #C1 = core::_Override {}
   #C2 = #org-dartlang-testcase:///field_promotion_and_no_such_method.dart::_f1
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = <dynamic>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #org-dartlang-testcase:///field_promotion_and_no_such_method.dart::_f2
 }
diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.expect
index cc7a4844..e2acc56 100644
--- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.expect
@@ -26,7 +26,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f1() → core::int?
-    return this.{self::E::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::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 class F extends core::Object implements fie::C {
   synthetic constructor •() → self::F
@@ -36,7 +36,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f2() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
 }
 static method acceptsInt(core::int x) → void {}
 static method testConflictsWithNoSuchMethodForwarder(self::C c) → void {
diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.modular.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.modular.expect
index cc7a4844..e2acc56 100644
--- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.modular.expect
@@ -26,7 +26,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f1() → core::int?
-    return this.{self::E::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::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 class F extends core::Object implements fie::C {
   synthetic constructor •() → self::F
@@ -36,7 +36,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f2() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
 }
 static method acceptsInt(core::int x) → void {}
 static method testConflictsWithNoSuchMethodForwarder(self::C c) → void {
diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.outline.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.outline.expect
index ab80b74..cbf3e3d 100644
--- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.outline.expect
@@ -23,7 +23,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder get _f1() → core::int?
-    return this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withType(#_f1, 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(#_f1, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 class F extends core::Object implements fie::C {
   synthetic constructor •() → self::F
@@ -32,7 +32,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder get _f2() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_f2, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_f2, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method acceptsInt(core::int x) → void
   ;
diff --git a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect
index cc7a4844..e2acc56 100644
--- a/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f1() → core::int?
-    return this.{self::E::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::E::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 class F extends core::Object implements fie::C {
   synthetic constructor •() → self::F
@@ -36,7 +36,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder get _f2() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
 }
 static method acceptsInt(core::int x) → void {}
 static method testConflictsWithNoSuchMethodForwarder(self::C c) → void {
diff --git a/pkg/front_end/testcases/late_lowering/caching.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/caching.dart.strong.transformed.expect
index 28cbe2f..27e34ea 100644
--- a/pkg/front_end/testcases/late_lowering/caching.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/caching.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
     final synthesized dynamic #1#0 = o;
     synthesized core::Object? #1#2;
     synthesized core::bool #1#2#isSet = false;
-    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
       return 2;
     }
   }
@@ -37,7 +37,7 @@
     final synthesized dynamic #3#0 = o;
     synthesized core::Object? #3#2;
     synthesized core::bool #3#2#isSet = false;
-    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
       return 4;
     }
   }
@@ -69,7 +69,7 @@
     final synthesized dynamic #8#0 = o;
     synthesized core::int #8#2;
     synthesized core::bool #8#2#isSet = false;
-    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 9;
     }
   }
@@ -81,7 +81,7 @@
     synthesized core::bool #9#15#isSet = false;
     synthesized dynamic #9#19;
     synthesized core::bool #9#19#isSet = false;
-    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
       return 10;
     }
   }
@@ -95,7 +95,7 @@
     synthesized core::bool #10#16#isSet = false;
     synthesized dynamic #10#20;
     synthesized core::bool #10#20#isSet = false;
-    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 11;
     }
   }
@@ -139,7 +139,7 @@
     final synthesized dynamic #17#0 = o;
     synthesized core::int? #17#4;
     synthesized core::bool #17#4#isSet = false;
-    if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t42 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t43 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t44 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t43 == null ?{core::int} #t43 as{Unchecked} core::int : #t43{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+    if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t42 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t43 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t44 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t43 == null ?{core::int} #t43 as{Unchecked} core::int : #t43{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
       return 18;
     }
   }
@@ -165,7 +165,7 @@
     final synthesized dynamic #21#0 = o;
     synthesized dynamic #21#4;
     synthesized core::bool #21#4#isSet = false;
-    if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t45 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t46 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+    if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t45 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t46 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
       return 22;
     }
   }
@@ -173,7 +173,7 @@
     final synthesized dynamic #22#0 = o;
     synthesized dynamic #22#4;
     synthesized core::bool #22#4#isSet = false;
-    if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t47 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t48 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+    if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t47 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t48 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
       return 23;
     }
   }
@@ -183,8 +183,8 @@
     synthesized core::bool #23#4#isSet = false;
     {
       hoisted dynamic a;
-      if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t49 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
-        a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t50 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
+      if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t49 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
+        a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t50 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
         {
           return 24;
         }
@@ -197,8 +197,8 @@
     synthesized core::bool #24#4#isSet = false;
     {
       hoisted core::int b;
-      if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t51 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t52 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t53 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+      if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t51 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t52 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t53 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
         {
           return 25;
         }
@@ -245,7 +245,7 @@
       final synthesized dynamic #1#0 = o;
       synthesized core::Object? #1#2;
       synthesized core::bool #1#2#isSet = false;
-      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t55 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t56 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t57 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t58 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t59 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t60 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t55 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t56 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t57 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t58 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t59 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t60 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         return 2;
       }
       else {
@@ -257,7 +257,7 @@
           final synthesized dynamic #3#0 = o;
           synthesized core::Object? #3#2;
           synthesized core::bool #3#2#isSet = false;
-          if(#3#0 is ({g: core::Object?}) && (let final core::int #t61 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t62 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t63 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+          if(#3#0 is ({g: core::Object?}) && (let final core::int #t61 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t62 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t63 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
             return 4;
           }
           else {
@@ -284,7 +284,7 @@
                     final synthesized dynamic #8#0 = o;
                     synthesized core::int #8#2;
                     synthesized core::bool #8#2#isSet = false;
-                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t65 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t66 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t65 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t66 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                       return 9;
                     }
                     else {
@@ -295,7 +295,7 @@
                       synthesized core::bool #9#15#isSet = false;
                       synthesized dynamic #9#19;
                       synthesized core::bool #9#19#isSet = false;
-                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t68 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t69 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t70 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t71 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t72 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t73 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t74 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t75 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t76 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t77 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t68 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t69 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t70 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t71 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t72 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t73 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t74 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t75 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t76 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t77 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
                         return 10;
                       }
                       else {
@@ -308,7 +308,7 @@
                         synthesized core::bool #10#16#isSet = false;
                         synthesized dynamic #10#20;
                         synthesized core::bool #10#20#isSet = false;
-                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t78 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t79 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t80 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t81 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t82 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t85 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t86 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t87 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t88 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t89 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t90 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t91 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t92 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t93 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t94 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t95 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t78 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t79 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t80 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t81 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t82 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t85 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t86 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t87 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t88 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t89 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t90 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t91 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t92 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t93 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t94 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t95 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                           return 11;
                         }
                         else {
@@ -345,7 +345,7 @@
                                       final synthesized dynamic #17#0 = o;
                                       synthesized core::int? #17#4;
                                       synthesized core::bool #17#4#isSet = false;
-                                      if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t96 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t97 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t98 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t97 == null ?{core::int} #t97 as{Unchecked} core::int : #t97{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+                                      if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t96 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t97 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t98 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t97 == null ?{core::int} #t97 as{Unchecked} core::int : #t97{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
                                         return 18;
                                       }
                                       else {
@@ -367,14 +367,14 @@
                                               final synthesized dynamic #21#0 = o;
                                               synthesized dynamic #21#4;
                                               synthesized core::bool #21#4#isSet = false;
-                                              if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t99 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t100 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+                                              if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t99 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t100 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
                                                 return 22;
                                               }
                                               else {
                                                 final synthesized dynamic #22#0 = o;
                                                 synthesized dynamic #22#4;
                                                 synthesized core::bool #22#4#isSet = false;
-                                                if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t101 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t102 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+                                                if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t101 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t102 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
                                                   return 23;
                                                 }
                                                 else {
@@ -383,8 +383,8 @@
                                                   synthesized core::bool #23#4#isSet = false;
                                                   {
                                                     hoisted dynamic a;
-                                                    if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t103 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
-                                                      a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t104 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
+                                                    if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t103 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
+                                                      a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t104 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
                                                       {
                                                         return 24;
                                                       }
@@ -395,8 +395,8 @@
                                                       synthesized core::bool #24#4#isSet = false;
                                                       {
                                                         hoisted core::int b;
-                                                        if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t105 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t106 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t107 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+                                                        if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t105 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t106 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t107 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
                                                           {
                                                             return 25;
                                                           }
@@ -516,7 +516,7 @@
       }
     }
     {
-      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t109 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t110 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t111 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t112 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t113 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t114 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t109 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t110 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t111 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t112 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t113 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t114 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         {
           return 2;
         }
@@ -530,63 +530,63 @@
       }
     }
     {
-      if(#0#0 is ({g: core::Object?}) && (let final core::int #t115 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t116 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t117 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+      if(#0#0 is ({g: core::Object?}) && (let final core::int #t115 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t116 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t117 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
         {
           return 4;
         }
       }
     }
     {
-      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t118 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t119 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t118 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t119 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
         {
           return 5;
         }
       }
     }
     {
-      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t120 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t120 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
         {
           return 6;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t121 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t122 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t123 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t121 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t122 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t123 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 7;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t124 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t125 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t126 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t127 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t124 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t125 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t126 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t127 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 8;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t128 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t129 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t130 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t131 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t132 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t133 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t128 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t129 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t130 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t131 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t132 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t133 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 9;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t134 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t135 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t136 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t137 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t138 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t139 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t140 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t141 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t142 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t143 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t144 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t145 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t146 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t147 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t148 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t134 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t135 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t136 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t137 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t138 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t139 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t140 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t141 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t142 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t143 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t144 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t145 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t146 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t147 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t148 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
         {
           return 10;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t149 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t151 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t152 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t153 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t154 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t155 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t156 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t157 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t158 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t159 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t160 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t161 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t162 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t163 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t164 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t165 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t166 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t167 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t168 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t169 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t170 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t149 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t151 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t152 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t153 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t154 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t155 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t156 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t157 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t158 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t159 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t160 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t161 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t162 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t163 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t164 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t165 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t166 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t167 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t168 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t169 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t170 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 11;
         }
       }
     }
     {
-      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t171 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t171 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
         {
           return 12;
         }
@@ -600,7 +600,7 @@
       }
     }
     {
-      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t172 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t172 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
         {
           return 14;
         }
@@ -628,14 +628,14 @@
       }
     }
     {
-      if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t173 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t174 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t175 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t174 == null ?{core::int} #t174 as{Unchecked} core::int : #t174{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+      if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t173 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t174 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t175 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t174 == null ?{core::int} #t174 as{Unchecked} core::int : #t174{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
         {
           return 18;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t176 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t176 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
         {
           return 19;
         }
@@ -656,14 +656,14 @@
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t177 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t178 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t177 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t178 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
         {
           return 22;
         }
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t179 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t180 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t179 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t180 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
         {
           return 23;
         }
@@ -671,7 +671,7 @@
     }
     {
       hoisted dynamic a;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t181 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && (let final dynamic #t182 = a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t183 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t181 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && (let final dynamic #t182 = a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t183 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) {
         {
           return 24;
         }
@@ -679,7 +679,7 @@
     }
     {
       hoisted core::int b;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t184 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t185 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t186 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t187 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t184 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t185 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t186 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t187 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
         {
           return 25;
         }
@@ -694,7 +694,7 @@
     }
     {
       hoisted dynamic c;
-      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t188 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t189 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t190 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
+      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t188 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t189 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t190 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
         {
           return 27;
         }
@@ -775,7 +775,7 @@
         }
       }
       {
-        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t193 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t194 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t195 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t196 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t197 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t198 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t193 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t194 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t195 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t196 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t197 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t198 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
           #t192 = 2;
           break #L2;
         }
@@ -787,55 +787,55 @@
         }
       }
       {
-        if(#0#0 is ({g: core::Object?}) && (let final core::int #t199 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t200 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t201 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+        if(#0#0 is ({g: core::Object?}) && (let final core::int #t199 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t200 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t201 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
           #t192 = 4;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t202 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t203 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t202 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t203 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
           #t192 = 5;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t204 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t204 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
           #t192 = 6;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t205 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t206 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t207 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t205 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t206 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t207 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t192 = 7;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t208 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t209 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t210 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t211 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t208 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t209 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t210 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t211 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t192 = 8;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t212 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t213 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t214 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t215 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t216 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t217 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t212 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t213 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t214 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t215 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t216 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t217 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t192 = 9;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t218 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t220 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t221 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t222 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t223 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t224 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t225 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t226 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t227 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t228 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t229 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t230 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t231 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t232 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t218 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t220 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t221 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t222 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t223 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t224 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t225 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t226 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t227 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t228 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t229 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t230 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t231 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t232 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
           #t192 = 10;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t233 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t234 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t235 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t236 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t237 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t238 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t239 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t240 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t241 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t242 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t243 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t244 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t245 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t246 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t247 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t248 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t249 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t250 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t251 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t252 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t253 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t254 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t233 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t234 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t235 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t236 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t237 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t238 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t239 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t240 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t241 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t242 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t243 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t244 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t245 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t246 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t247 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t248 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t249 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t250 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t251 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t252 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t253 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t254 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t192 = 11;
           break #L2;
         }
       }
       {
-        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t255 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t255 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
           #t192 = 12;
           break #L2;
         }
@@ -847,7 +847,7 @@
         }
       }
       {
-        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t256 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t256 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
           #t192 = 14;
           break #L2;
         }
@@ -871,13 +871,13 @@
         }
       }
       {
-        if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t257 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t258 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t259 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t258 == null ?{core::int} #t258 as{Unchecked} core::int : #t258{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+        if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t257 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t258 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t259 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t258 == null ?{core::int} #t258 as{Unchecked} core::int : #t258{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
           #t192 = 18;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t260 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t260 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
           #t192 = 19;
           break #L2;
         }
@@ -895,29 +895,29 @@
         }
       }
       {
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t261 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t262 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t261 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t262 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
           #t192 = 22;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t263 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t264 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t263 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t264 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
           #t192 = 23;
           break #L2;
         }
       }
       {
         hoisted dynamic a;
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t265 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
-          a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t266 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t265 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
+          a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t266 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
           #t192 = 24;
           break #L2;
         }
       }
       {
         hoisted core::int b;
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t267 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t268 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t269 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t267 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t268 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t269 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
           #t192 = 25;
           break #L2;
         }
@@ -930,8 +930,8 @@
       }
       {
         hoisted dynamic c;
-        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t270 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
-          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t271 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
+        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t270 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
+          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t271 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
           #t192 = 27;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect
index 95af3f4..6eda084 100644
--- a/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/caching.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     final synthesized dynamic #1#0 = o;
     synthesized core::Object? #1#2;
     synthesized core::bool #1#2#isSet = false;
-    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
       return 2;
     }
   }
@@ -38,7 +38,7 @@
     final synthesized dynamic #3#0 = o;
     synthesized core::Object? #3#2;
     synthesized core::bool #3#2#isSet = false;
-    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
       return 4;
     }
   }
@@ -70,7 +70,7 @@
     final synthesized dynamic #8#0 = o;
     synthesized core::int #8#2;
     synthesized core::bool #8#2#isSet = false;
-    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 9;
     }
   }
@@ -82,7 +82,7 @@
     synthesized core::bool #9#15#isSet = false;
     synthesized dynamic #9#19;
     synthesized core::bool #9#19#isSet = false;
-    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
       return 10;
     }
   }
@@ -96,7 +96,7 @@
     synthesized core::bool #10#16#isSet = false;
     synthesized dynamic #10#20;
     synthesized core::bool #10#20#isSet = false;
-    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 11;
     }
   }
@@ -190,8 +190,8 @@
     synthesized core::bool #24#4#isSet = false;
     {
       hoisted core::int b;
-      if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t42 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+      if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t42 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
         {
           return 25;
         }
@@ -238,7 +238,7 @@
       final synthesized dynamic #1#0 = o;
       synthesized core::Object? #1#2;
       synthesized core::bool #1#2#isSet = false;
-      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t45 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t46 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t48 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t49 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t45 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t46 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t48 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t49 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         return 2;
       }
       else {
@@ -250,7 +250,7 @@
           final synthesized dynamic #3#0 = o;
           synthesized core::Object? #3#2;
           synthesized core::bool #3#2#isSet = false;
-          if(#3#0 is ({g: core::Object?}) && (let final core::int #t51 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t52 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+          if(#3#0 is ({g: core::Object?}) && (let final core::int #t51 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t52 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
             return 4;
           }
           else {
@@ -277,7 +277,7 @@
                     final synthesized dynamic #8#0 = o;
                     synthesized core::int #8#2;
                     synthesized core::bool #8#2#isSet = false;
-                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t55 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t55 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                       return 9;
                     }
                     else {
@@ -288,7 +288,7 @@
                       synthesized core::bool #9#15#isSet = false;
                       synthesized dynamic #9#19;
                       synthesized core::bool #9#19#isSet = false;
-                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t57 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t58 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t59 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t60 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t61 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t62 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t63 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t64 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t65 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t66 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t57 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t58 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t59 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t60 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t61 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t62 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t63 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t64 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t65 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t66 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
                         return 10;
                       }
                       else {
@@ -301,7 +301,7 @@
                         synthesized core::bool #10#16#isSet = false;
                         synthesized dynamic #10#20;
                         synthesized core::bool #10#20#isSet = false;
-                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t68 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t69 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t70 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t71 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t72 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t73 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t74 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t75 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t76 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t77 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t78 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t79 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t80 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t81 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t82 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t68 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t69 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t70 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t71 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t72 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t73 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t74 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t75 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t76 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t77 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t78 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t79 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t80 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t81 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t82 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                           return 11;
                         }
                         else {
@@ -380,8 +380,8 @@
                                                       synthesized core::bool #24#4#isSet = false;
                                                       {
                                                         hoisted core::int b;
-                                                        if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t86 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t87 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+                                                        if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t86 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t87 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
                                                           {
                                                             return 25;
                                                           }
@@ -493,7 +493,7 @@
       }
     }
     {
-      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t89 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t90 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t91 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t92 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t94 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t89 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t90 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t91 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t92 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t94 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         {
           return 2;
         }
@@ -507,63 +507,63 @@
       }
     }
     {
-      if(#0#0 is ({g: core::Object?}) && (let final core::int #t95 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t96 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t97 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+      if(#0#0 is ({g: core::Object?}) && (let final core::int #t95 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t96 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t97 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
         {
           return 4;
         }
       }
     }
     {
-      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t98 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t99 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t98 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t99 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
         {
           return 5;
         }
       }
     }
     {
-      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t100 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t100 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
         {
           return 6;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t101 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t102 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t103 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t101 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t102 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t103 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 7;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t104 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t105 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t106 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t107 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t104 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t105 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t106 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t107 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 8;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t108 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t109 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t110 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t111 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t112 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t113 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t108 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t109 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t110 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t111 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t112 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t113 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 9;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t114 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t116 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t117 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t118 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t119 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t120 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t121 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t124 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t125 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t126 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t114 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t116 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t117 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t118 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t119 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t120 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t121 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t124 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t125 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t126 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
         {
           return 10;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t129 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t130 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t131 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t132 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t133 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t134 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t135 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t136 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t137 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t138 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t139 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t140 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t141 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t142 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t143 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t144 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t145 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t146 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t147 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t148 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t149 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t129 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t130 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t131 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t132 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t133 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t134 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t135 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t136 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t137 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t138 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t139 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t140 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t141 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t142 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t143 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t144 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t145 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t146 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t147 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t148 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t149 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 11;
         }
       }
     }
     {
-      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t151 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t151 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
         {
           return 12;
         }
@@ -577,7 +577,7 @@
       }
     }
     {
-      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t152 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t152 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
         {
           return 14;
         }
@@ -612,7 +612,7 @@
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t153 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t153 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
         {
           return 19;
         }
@@ -656,7 +656,7 @@
     }
     {
       hoisted core::int b;
-      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t155 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t156 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t157 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t155 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t156 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t157 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
         {
           return 25;
         }
@@ -671,7 +671,7 @@
     }
     {
       hoisted dynamic c;
-      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t158 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t159 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t160 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
+      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t158 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t159 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t160 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
         {
           return 27;
         }
@@ -744,7 +744,7 @@
         }
       }
       {
-        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t163 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t164 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t165 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t163 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t164 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t165 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
           #t162 = 2;
           break #L2;
         }
@@ -756,55 +756,55 @@
         }
       }
       {
-        if(#0#0 is ({g: core::Object?}) && (let final core::int #t169 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t170 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t171 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+        if(#0#0 is ({g: core::Object?}) && (let final core::int #t169 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t170 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t171 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
           #t162 = 4;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t172 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t173 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t172 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t173 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
           #t162 = 5;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t174 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t174 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
           #t162 = 6;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t175 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t176 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t177 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t175 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t176 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t177 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t162 = 7;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t178 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t179 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t180 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t181 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t178 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t179 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t180 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t181 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t162 = 8;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t182 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t183 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t184 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t185 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t186 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t187 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t182 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t183 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t184 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t185 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t186 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t187 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t162 = 9;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t188 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t189 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t190 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t191 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t192 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t193 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t194 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t196 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t197 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t198 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t199 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t201 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t202 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t188 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t189 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t190 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t191 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t192 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t193 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t194 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t196 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t197 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t198 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t199 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t201 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t202 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
           #t162 = 10;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t203 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t204 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t205 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t206 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t207 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t208 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t209 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t210 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t211 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t212 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t216 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t217 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t218 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t223 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t224 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t203 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t204 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t205 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t206 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t207 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t208 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t209 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t210 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t211 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t212 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t216 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t217 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t218 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t223 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t224 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t162 = 11;
           break #L2;
         }
       }
       {
-        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t225 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t225 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
           #t162 = 12;
           break #L2;
         }
@@ -816,7 +816,7 @@
         }
       }
       {
-        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t226 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t226 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
           #t162 = 14;
           break #L2;
         }
@@ -846,7 +846,7 @@
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
           #t162 = 19;
           break #L2;
         }
@@ -885,8 +885,8 @@
       }
       {
         hoisted core::int b;
-        if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t228 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t229 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+        if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t228 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t229 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
           #t162 = 25;
           break #L2;
         }
@@ -899,8 +899,8 @@
       }
       {
         hoisted dynamic c;
-        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t230 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
-          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t231 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
+        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t230 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
+          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t231 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
           #t162 = 27;
           break #L2;
         }
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 d9db479..48fdfb7 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 _#A#x() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x(core::int? value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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::•();
@@ -42,8 +42,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///issue41436c.dart::_#A#x
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #org-dartlang-testcase:///issue41436c.dart::_#A#x=
 }
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 bb967ef..6255fca 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 _#A#x() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x(core::int? value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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::•();
@@ -42,8 +42,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///issue41436c.dart::_#A#x
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #org-dartlang-testcase:///issue41436c.dart::_#A#x=
 }
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 94d3699..c928bc0 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 _#A#x() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x(core::int? value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 _#A#x#isSet() → core::bool
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x#isSet(core::bool value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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.modular.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.modular.expect
index edfaeb5..198bb99 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.modular.expect
@@ -10,13 +10,13 @@
     : super iss::B::•()
     ;
   no-such-method-forwarder get _#A#x() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x(core::int? value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 _#A#x#isSet() → core::bool
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x#isSet(core::bool value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 1e9c610..85e42a0 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 _#A#x() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_#A#x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_#A#x, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set _#A#x(core::int? value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
   no-such-method-forwarder get _#A#x#isSet() → core::bool
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_#A#x#isSet, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_#A#x#isSet, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set _#A#x#isSet(core::bool value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
 }
 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 c937037..8c2b91c 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 _#A#x() → core::int?
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x(core::int? value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 _#A#x#isSet() → core::bool
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C6, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _#A#x#isSet(core::bool value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C7, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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/pattern_assignment_final.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.strong.transformed.expect
index 6c4f92f..9910ffb 100644
--- a/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.strong.transformed.expect
@@ -100,9 +100,9 @@
     synthesized core::bool #2#16#isSet = false;
     if(!(#2#0 is self::Class && (let final dynamic #t7 = #2#0{self::Class}.{self::Class::field1}{dynamic} in invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:36:17: Error: Late final variable '#definitelyAssignedLateFinal' definitely assigned.
   Class(field1: definitelyAssignedLateFinal, // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t8 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t10 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t12 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t8 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t10 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t12 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
       field2: [[notDefinitelyAssignedFinal, _], // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t14 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t15 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t16 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t17 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t18 = #notDefinitelyAssignedLateFinal#set(((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t19 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t20 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int?){(core::int) → dynamic} in true)))))
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t14 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t15 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t16 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t17 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t18 = #notDefinitelyAssignedLateFinal#set(((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t19 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t20 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int?){(core::int) → dynamic} in true)))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.weak.transformed.expect
index 74457e9..b5526d8 100644
--- a/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart.weak.transformed.expect
@@ -115,9 +115,9 @@
     synthesized core::bool #2#16#isSet = false;
     if(!(#2#0 is self::Class && (let final dynamic #t4 = #2#0{self::Class}.{self::Class::field1}{dynamic} in invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:36:17: Error: Late final variable '#definitelyAssignedLateFinal' definitely assigned.
   Class(field1: definitelyAssignedLateFinal, // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t6 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t7 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t8 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t9 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t10 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t6 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t7 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t8 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t9 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t10 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/late_lowering/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
       field2: [[notDefinitelyAssignedFinal, _], // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t11 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t12 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t13 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t14 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t15 = #notDefinitelyAssignedLateFinal#set(((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t16 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t17 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int?){(core::int) → dynamic} in true)))))
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t11 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t12 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t13 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t14 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t15 = #notDefinitelyAssignedLateFinal#set(((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t16 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t17 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int?){(core::int) → dynamic} in true)))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect
index 8fbb67f..b8fa84b 100644
--- a/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_sample.dart.strong.transformed.expect
@@ -40,16 +40,16 @@
   }
   @#C11
   static get x#offsetOf() → core::int
-    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C11
   static get y#offsetOf() → core::int
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C11
   static get next#offsetOf() → core::int
-    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C11
-  static get #sizeOf() → core::int*
-    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {}
 
@@ -65,14 +65,14 @@
   #C9 = 0
   #C10 = "vm:prefer-inline"
   #C11 = core::pragma {name:#C10, options:#C5}
-  #C12 = <core::int*>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
+  #C12 = <core::int>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
   #C13 = 8
-  #C14 = <core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect
index 8fbb67f..b8fa84b 100644
--- a/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_sample.dart.weak.transformed.expect
@@ -40,16 +40,16 @@
   }
   @#C11
   static get x#offsetOf() → core::int
-    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C11
   static get y#offsetOf() → core::int
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C11
   static get next#offsetOf() → core::int
-    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C11
-  static get #sizeOf() → core::int*
-    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {}
 
@@ -65,14 +65,14 @@
   #C9 = 0
   #C10 = "vm:prefer-inline"
   #C11 = core::pragma {name:#C10, options:#C5}
-  #C12 = <core::int*>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
+  #C12 = <core::int>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
   #C13 = 8
-  #C14 = <core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
   #C15 = 16
-  #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = 24
   #C18 = 20
-  #C19 = <core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
+  #C19 = <core::int>[#C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect
index 6a96baa..1416f43 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.strong.transformed.expect
@@ -23,13 +23,13 @@
     return new ffi::Array::_<ffi::Uint8>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArray::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C3, #C10);
   @#C9
   set a0(synthesized ffi::Array<ffi::Uint8> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArray::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArray::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C13
   static get a0#offsetOf() → core::int
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C13
-  static get #sizeOf() → core::int*
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {}
 
@@ -43,12 +43,12 @@
   #C7 = ffi::_FfiStructLayout {fieldTypes:#C5, packing:#C6}
   #C8 = core::pragma {name:#C1, options:#C7}
   #C9 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C3, dimension2:#C6, dimension3:#C6, dimension4:#C6, dimension5:#C6, dimensions:#C6}
-  #C10 = <core::int*>[]
-  #C11 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C10 = <core::int>[]
+  #C11 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C12 = "vm:prefer-inline"
   #C13 = core::pragma {name:#C12, options:#C6}
   #C14 = 0
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
 }
 
 
diff --git a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect
index 940db56..de89f51 100644
--- a/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/ffi_struct_inline_array.dart.weak.transformed.expect
@@ -23,13 +23,13 @@
     return new ffi::Array::_<ffi::Uint8>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArray::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C3, #C10);
   @#C9
   set a0(synthesized ffi::Array<ffi::Uint8> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArray::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArray::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C13
   static get a0#offsetOf() → core::int
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C13
-  static get #sizeOf() → core::int*
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {}
 
@@ -43,12 +43,12 @@
   #C7 = ffi::_FfiStructLayout {fieldTypes:#C5, packing:#C6}
   #C8 = core::pragma {name:#C1, options:#C7}
   #C9 = ffi::_ArraySize<ffi::NativeType*> {dimension1:#C3, dimension2:#C6, dimension3:#C6, dimension4:#C6, dimension5:#C6, dimensions:#C6}
-  #C10 = <core::int*>[]
-  #C11 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C10 = <core::int>[]
+  #C11 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C12 = "vm:prefer-inline"
   #C13 = core::pragma {name:#C12, options:#C6}
   #C14 = 0
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
 }
 
 
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 b9eb162..5700286 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
@@ -24,13 +24,13 @@
     return new ffi::Array::_<ffi::Array<ffi::Array<ffi::Uint8>>>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C9, #C11);
   @#C10
   set a0(synthesized ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C14
   static get a0#offsetOf() → core::int
-    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C14
-  static get #sizeOf() → core::int*
-    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {
   final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = #C17.{ffi::Allocator::allocate}<self::StructInlineArrayMultiDimensional>(self::StructInlineArrayMultiDimensional::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::StructInlineArrayMultiDimensional>};
@@ -67,12 +67,12 @@
   #C8 = core::pragma {name:#C1, options:#C7}
   #C9 = 2
   #C10 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C9, dimension2:#C9, dimension3:#C9, dimension4:#C6, dimension5:#C6, dimensions:#C6}
-  #C11 = <core::int*>[#C9, #C9]
-  #C12 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C11 = <core::int>[#C9, #C9]
+  #C12 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C13 = "vm:prefer-inline"
   #C14 = core::pragma {name:#C13, options:#C6}
   #C15 = 0
-  #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = all::CallocAllocator {}
   #C18 = 1
 }
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 76c3406..bb6c4a1 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
@@ -24,13 +24,13 @@
     return new ffi::Array::_<ffi::Array<ffi::Array<ffi::Uint8>>>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C9, #C11);
   @#C10
   set a0(synthesized ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C14
   static get a0#offsetOf() → core::int
-    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C14
-  static get #sizeOf() → core::int*
-    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → dynamic {
   final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = #C17.{ffi::Allocator::allocate}<self::StructInlineArrayMultiDimensional>(self::StructInlineArrayMultiDimensional::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::StructInlineArrayMultiDimensional>};
@@ -67,12 +67,12 @@
   #C8 = core::pragma {name:#C1, options:#C7}
   #C9 = 2
   #C10 = ffi::_ArraySize<ffi::NativeType*> {dimension1:#C9, dimension2:#C9, dimension3:#C9, dimension4:#C6, dimension5:#C6, dimensions:#C6}
-  #C11 = <core::int*>[#C9, #C9]
-  #C12 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C11 = <core::int>[#C9, #C9]
+  #C12 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C13 = "vm:prefer-inline"
   #C14 = core::pragma {name:#C13, options:#C6}
   #C15 = 0
-  #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
+  #C16 = <core::int>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15]
   #C17 = all::CallocAllocator {}
   #C18 = 1
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
index 5f42b5f..2731adf 100644
--- a/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42362.dart.weak.outline.expect
@@ -103,19 +103,19 @@
     ;
   external constructor constructor8([core::int i = null]) → self::A;
   external constructor constructor9({core::int i = null}) → self::A;
-  static factory factory3([core::int i]) → self::A /* redirection-target: self::A::constructor3 */
+  static factory factory3([core::int i = null]) → self::A /* redirection-target: self::A::constructor3 */
     return new self::A::constructor3(i);
-  static factory factory4({core::int i}) → self::A /* redirection-target: self::A::constructor4 */
+  static factory factory4({core::int i = null}) → self::A /* redirection-target: self::A::constructor4 */
     return new self::A::constructor4(i: i);
-  static factory factory5([core::int? i]) → self::A /* redirection-target: self::A::constructor5 */
+  static factory factory5([core::int? i = null]) → self::A /* redirection-target: self::A::constructor5 */
     return new self::A::constructor5(i);
-  static factory factory6({core::int? i}) → self::A /* redirection-target: self::A::constructor6 */
+  static factory factory6({core::int? i = null}) → self::A /* redirection-target: self::A::constructor6 */
     return new self::A::constructor6(i: i);
   static factory factory7({required core::int i}) → self::A /* redirection-target: self::A::constructor7 */
     return new self::A::constructor7(i: i);
-  static factory factory8([core::int i]) → self::A
+  static factory factory8([core::int i = null]) → self::A
     ;
-  static factory factory9({core::int i}) → self::A
+  static factory factory9({core::int i = null}) → self::A
     ;
   method method3([core::int i = null]) → dynamic
     ;
@@ -156,19 +156,19 @@
     ;
   constructor constructor7({required core::int i}) → self::C
     ;
-  static factory factory3([core::int i]) → self::C /* redirection-target: self::C::constructor3 */
+  static factory factory3([core::int i = null]) → self::C /* redirection-target: self::C::constructor3 */
     return new self::C::constructor3(i);
-  static factory factory4({core::int i}) → self::C /* redirection-target: self::C::constructor4 */
+  static factory factory4({core::int i = null}) → self::C /* redirection-target: self::C::constructor4 */
     return new self::C::constructor4(i: i);
-  static factory factory5([core::int? i]) → self::C /* redirection-target: self::C::constructor5 */
+  static factory factory5([core::int? i = null]) → self::C /* redirection-target: self::C::constructor5 */
     return new self::C::constructor5(i);
-  static factory factory6({core::int? i}) → self::C /* redirection-target: self::C::constructor6 */
+  static factory factory6({core::int? i = null}) → self::C /* redirection-target: self::C::constructor6 */
     return new self::C::constructor6(i: i);
   static factory factory7({required core::int i}) → self::C /* redirection-target: self::C::constructor7 */
     return new self::C::constructor7(i: i);
-  static factory factory8([core::int i]) → self::C
+  static factory factory8([core::int i = null]) → self::C
     ;
-  static factory factory9({core::int i}) → self::C
+  static factory factory9({core::int i = null}) → self::C
     ;
   method method3([core::int i = null]) → dynamic
     ;
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
index 723b763..78ed498 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 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(#C2, 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>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 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>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method 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(#C4, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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(#C11, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async /* emittedValueType= dynamic */ {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = 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>>>'.
@@ -55,10 +55,10 @@
   #C2 = #then
   #C3 = #onError
   #C4 = #catchError
-  #C5 = <core::Type*>[]
+  #C5 = <core::Type>[]
   #C6 = #test
   #C7 = #whenComplete
-  #C8 = <core::Symbol*, dynamic>{}
+  #C8 = <core::Symbol, dynamic>{}
   #C9 = #asStream
   #C10 = <dynamic>[]
   #C11 = #timeout
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
index 85a71b5..9b5303c 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
@@ -27,15 +27,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder method 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(#C2, 0, core::List::unmodifiable<core::Type*>(core::_GrowableList::_literal1<core::Type*>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, core::List::unmodifiable<core::Type>(core::_GrowableList::_literal1<core::Type>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method 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(#C4, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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(#C11, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async /* emittedValueType= dynamic */ {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = 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>>>'.
@@ -55,10 +55,10 @@
   #C2 = #then
   #C3 = #onError
   #C4 = #catchError
-  #C5 = <core::Type*>[]
+  #C5 = <core::Type>[]
   #C6 = #test
   #C7 = #whenComplete
-  #C8 = <core::Symbol*, dynamic>{}
+  #C8 = <core::Symbol, dynamic>{}
   #C9 = #asStream
   #C10 = <dynamic>[]
   #C11 = #timeout
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
index 723b763..b2865fc 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 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(#C2, 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>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 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>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method 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(#C4, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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(#C11, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async /* emittedValueType= dynamic */ {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = 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>>>'.
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.modular.expect
index 723b763..b2865fc 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.modular.expect
@@ -27,15 +27,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder method 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(#C2, 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>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 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>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method 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(#C4, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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(#C11, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C5, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async /* emittedValueType= dynamic */ {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = 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>>>'.
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 ccf512e..977f723 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 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(#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} 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} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method 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(#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::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} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method 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} 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} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method 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} 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} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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(#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::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} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async 
   ;
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
index 85a71b5..97dbe18 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
@@ -27,15 +27,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return super.{core::Object::noSuchMethod}(invocation);
   no-such-method-forwarder method 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(#C2, 0, core::List::unmodifiable<core::Type*>(core::_GrowableList::_literal1<core::Type*>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, core::List::unmodifiable<core::Type>(core::_GrowableList::_literal1<core::Type>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C3: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent::then::R%>;
   no-such-method-forwarder method 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(#C4, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C6: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
-    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol*, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C5, #C10, core::Map::unmodifiable<core::Symbol, dynamic>(#C8))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
   no-such-method-forwarder method timeout(core::Duration timeLimit, {covariant-by-class () →? 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(#C11, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+    return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C5, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C12: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
 }
 static method test() → dynamic async /* emittedValueType= dynamic */ {
   asy::Future<self::Divergent<self::Divergent<core::int>>> x = 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>>>'.
diff --git a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
index bbe1162..cd81133 100644
--- a/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue43276.dart.weak.outline.expect
@@ -18,9 +18,9 @@
 class C extends core::Object {
   constructor gen({core::int i = null}) → self::C
     ;
-  static factory fact({core::int i}) → self::C
+  static factory fact({core::int i = null}) → self::C
     ;
-  static factory redirect({core::int i}) → self::C /* redirection-target: self::C::gen */
+  static factory redirect({core::int i = null}) → self::C /* redirection-target: self::C::gen */
     return new self::C::gen(i: i);
 }
 class D extends core::Object {
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 b99fa15..8e923da 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
@@ -201,9 +201,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → 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} 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} core::int;
   no-such-method-forwarder method mixedInMethod() → 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} 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} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -246,9 +246,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → 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} 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} core::int;
   no-such-method-forwarder method mixedInMethod() → 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} 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} core::int;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.modular.expect
index b99fa15..8e923da 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.modular.expect
@@ -201,9 +201,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → 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} 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} core::int;
   no-such-method-forwarder method mixedInMethod() → 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} 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} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -246,9 +246,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → 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} 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} core::int;
   no-such-method-forwarder method mixedInMethod() → 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} 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} 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 98aa4ec..27ad7a7 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
@@ -192,9 +192,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   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} 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} core::int;
   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} 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} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -232,9 +232,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} 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} 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} 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} 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 df57f2e..2216d1b 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
@@ -201,9 +201,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → 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} 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} core::int;
   no-such-method-forwarder method mixedInMethod() → 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} 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} core::int;
 }
 abstract class _ClassDeclaresExtends&Super&Mixin extends self::Super implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_ClassDeclaresExtends&Super&Mixin
@@ -246,9 +246,9 @@
     return super.{core::Object::noSuchMethod}(invocation);
   }
   no-such-method-forwarder method extendedMethod() → 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} 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} core::int;
   no-such-method-forwarder method mixedInMethod() → 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} 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} 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 48a55d3..9e7d2b5 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
@@ -171,9 +171,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateGetter() → opt::A
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _privateSetter(opt::C c) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 
 library /*isLegacy*/;
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 4afdb8f..8d06192 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 _privateGetter() → opt::A
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _privateSetter(opt::C c) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 
 library /*isLegacy*/;
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 cdde07e..9ee3f6a 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
@@ -171,9 +171,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateGetter() → opt::A
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder set _privateSetter(opt::C c) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(c)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 
 library /*isLegacy*/;
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 67cec33..eb6dd6d 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 field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 mixin class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -260,17 +260,17 @@
     : super self::_FromMixinConcrete&Object&MixinConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 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 field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 class InterfaceAbstract extends core::Object {
   synthetic constructor •() → self::InterfaceAbstract
@@ -342,17 +342,17 @@
     return null;
   }
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.modular.expect
index 67cec33..eb6dd6d 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.modular.expect
@@ -199,34 +199,34 @@
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 mixin class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -260,17 +260,17 @@
     : super self::_FromMixinConcrete&Object&MixinConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 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 field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 class InterfaceAbstract extends core::Object {
   synthetic constructor •() → self::InterfaceAbstract
@@ -342,17 +342,17 @@
     return null;
   }
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 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 42d0b25..e0380e7 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 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} 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} core::int;
   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>{}))){(core::Invocation) → dynamic};
   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>{}))){(core::Invocation) → dynamic};
   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} 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} core::int;
   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} 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} 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>{}))){(core::Invocation) → dynamic};
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     ;
   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} 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} core::int;
   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>{}))){(core::Invocation) → dynamic};
   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>{}))){(core::Invocation) → dynamic};
   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} 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} core::int;
   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} 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} 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>{}))){(core::Invocation) → dynamic};
 }
 mixin class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -239,17 +239,17 @@
   synthetic constructor •() → self::FromMixinConcrete
     ;
   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} 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} core::int;
   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>{}))){(core::Invocation) → dynamic};
   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>{}))){(core::Invocation) → dynamic};
   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} 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} core::int;
   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} 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} 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>{}))){(core::Invocation) → 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 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} 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} core::int;
   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>{}))){(core::Invocation) → dynamic};
   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>{}))){(core::Invocation) → dynamic};
   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} 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} core::int;
   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} 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} 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>{}))){(core::Invocation) → 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 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} 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} core::int;
   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>{}))){(core::Invocation) → dynamic};
   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>{}))){(core::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} 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} core::int;
   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} 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} 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>{}))){(core::Invocation) → 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 9645933..cd5a84f 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 field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 class FromSuperConcreteAbstract extends self::SuperConcrete implements self::SuperAbstract, self::Interface {
   synthetic constructor •() → self::FromSuperConcreteAbstract
     : super self::SuperConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::SuperConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 mixin class MixinAbstract extends core::Object {
   synthetic constructor •() → self::MixinAbstract
@@ -262,17 +262,17 @@
     : super self::_FromMixinConcrete&Object&MixinConcrete::•()
     ;
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::_FromMixinConcrete&Object&MixinConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 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 field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::_FromMixinConcreteAbstract&Object&MixinConcrete&MixinAbstract::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 class InterfaceAbstract extends core::Object {
   synthetic constructor •() → self::InterfaceAbstract
@@ -346,17 +346,17 @@
     return null;
   }
   no-such-method-forwarder get field() → 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} 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} core::int;
   no-such-method-forwarder set field(core::int value) → void
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
   no-such-method-forwarder get getter() → 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} 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} core::int;
   no-such-method-forwarder get finalField() → core::int
-    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::DeclaredConcrete::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder set setter(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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
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 9d84e8a..37f6361 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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} _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,ForLegacy} _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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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}))){(core::Invocation*) →* dynamic};
   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}))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* 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(#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))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* dynamic};
   no-such-method-forwarder method 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))){(core::Invocation*) →* dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.modular.expect
index 9d84e8a..37f6361 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.modular.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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} _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,ForLegacy} _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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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}))){(core::Invocation*) →* dynamic};
   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}))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* 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(#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))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* dynamic};
   no-such-method-forwarder method 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))){(core::Invocation*) →* dynamic};
 }
 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 ba89af0..8599b1b 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} _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,ForLegacy} _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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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>{}))){(core::Invocation*) →* 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} core::String*;
   no-such-method-forwarder method add(core::String* name, core::Object* value, {core::bool* preserveHeaderCase = #C1}) → 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}))){(core::Invocation*) →* dynamic};
   no-such-method-forwarder method set(core::String* name, core::Object* value, {core::bool* preserveHeaderCase = #C1}) → 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}))){(core::Invocation*) →* dynamic};
   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>{}))){(core::Invocation*) →* 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>{}))){(core::Invocation*) →* 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>{}))){(core::Invocation*) →* 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>{}))){(core::Invocation*) →* dynamic};
   no-such-method-forwarder method 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>{}))){(core::Invocation*) →* 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 a133244..745bfca 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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} _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,ForLegacy} _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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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))){(core::Invocation*) →* dynamic};
   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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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,ForLegacy} 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}))){(core::Invocation*) →* dynamic};
   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}))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* 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(#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))){(core::Invocation*) →* dynamic};
   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))){(core::Invocation*) →* dynamic};
   no-such-method-forwarder method 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))){(core::Invocation*) →* dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
index ae5dfa2..bf76e9e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → dynamic};
 }
 class B extends self::A {
   synthetic constructor •() → self::B
@@ -40,8 +40,8 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
index 3cd24f6..49f4c04 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → dynamic};
 }
 class B extends self::A {
   synthetic constructor •() → self::B
@@ -40,8 +40,8 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
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 ae5dfa2..6a17ef0 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
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.modular.expect
index ae5dfa2..6a17ef0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.modular.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
index 8addde4..41f8fb7 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
@@ -13,9 +13,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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 3cd24f6..f73c81c 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
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "bar";
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → dynamic};
 }
 class B extends self::A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
index 0820b97..71621e1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → dynamic};
 }
 abstract class _C&Object&B = core::Object with self::B /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&B
@@ -50,8 +50,8 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
index 5449ce7..ed2f6b5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → dynamic};
 }
 abstract class _C&Object&B extends core::Object implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&B
@@ -52,8 +52,8 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
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 0820b97..cf7a4f4 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
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.modular.expect
index 0820b97..cf7a4f4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.modular.expect
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
index 2c6ceab..5bdf2f0 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
@@ -13,9 +13,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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 5449ce7..1d54a78 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
@@ -17,9 +17,9 @@
     return null;
   }
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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(#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))){(core::Invocation) → dynamic};
 }
 abstract class _C&Object&B extends core::Object implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
index f33666a..a55678b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int? value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
@@ -56,8 +56,8 @@
 
 constants  {
   #C1 = #foo=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #foo
   #C5 = <dynamic>[]
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
index 069c0da..91efafb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int? value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
@@ -56,8 +56,8 @@
 
 constants  {
   #C1 = #foo=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #foo
   #C5 = <dynamic>[]
 }
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 f33666a..1f3d52f 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
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int? value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.modular.expect
index f33666a..1f3d52f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.modular.expect
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int? value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
index b79b127..088d68a 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
@@ -19,7 +19,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>{}))){(core::Invocation) → dynamic};
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -33,7 +33,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>{}))){(core::Invocation) → 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 069c0da..6774c11 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
@@ -22,7 +22,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder set foo(core::int? value) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 abstract class D extends core::Object implements self::A {
   synthetic constructor •() → self::D
@@ -37,7 +37,7 @@
     : super self::D::•()
     ;
   no-such-method-forwarder get foo() → core::int?
-    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
+    return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int?;
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
index 147928a..95eb678 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::List<core::int>?;
   no-such-method-forwarder set foo(covariant-by-class 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))){(core::Invocation) → dynamic};
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
@@ -35,8 +35,8 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
index 2ebd8b1..99609a9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return core::_GrowableList::•<dynamic>(0);
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::List<core::int>?;
   no-such-method-forwarder set foo(covariant-by-class 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))){(core::Invocation) → dynamic};
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
@@ -35,8 +35,8 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
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 147928a..c4a27c6 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
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::List<core::int>?;
   no-such-method-forwarder set foo(covariant-by-class 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))){(core::Invocation) → dynamic};
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.modular.expect
index 147928a..c4a27c6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.modular.expect
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return <dynamic>[];
   no-such-method-forwarder get foo() → core::List<core::int>?
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::List<core::int>?;
   no-such-method-forwarder set foo(covariant-by-class 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))){(core::Invocation) → dynamic};
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
index cc2b44f..8d23e51 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
@@ -13,9 +13,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::List<core::int>?;
   no-such-method-forwarder set foo(covariant-by-class 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>{}))){(core::Invocation) → 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 2ebd8b1..854289a 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
@@ -15,9 +15,9 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return core::_GrowableList::•<dynamic>(0);
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::List<core::int>?;
   no-such-method-forwarder set foo(covariant-by-class 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))){(core::Invocation) → dynamic};
 }
 static method expectTypeError(() → dynamic callback) → void {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
index ff55b79..763fa03 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.expect
@@ -21,13 +21,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
index ff55b79..763fa03 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.strong.transformed.expect
@@ -21,13 +21,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 ff55b79..19bcf21 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
@@ -21,7 +21,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.modular.expect
index ff55b79..19bcf21 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.modular.expect
@@ -21,7 +21,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))){(core::Invocation) → dynamic};
 }
 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 a2570d6..f9b5578 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
@@ -17,7 +17,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>{}))){(core::Invocation) → 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 ff55b79..19bcf21 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
@@ -21,7 +21,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect
index ce17c91..b169dd3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.expect
@@ -7,9 +7,9 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::int x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return core::print("${this.{core::Object::runtimeType}{core::Type}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}}");
 }
@@ -23,9 +23,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::num x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   core::List<self::Base> list = <self::Base>[new self::Me::•(), new self::You::•()];
@@ -55,7 +55,7 @@
 
 constants  {
   #C1 = #push=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #float=
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect
index ea0f229..56f1be3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.strong.transformed.expect
@@ -7,9 +7,9 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::int x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return core::print("${this.{core::Object::runtimeType}{core::Type}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}}");
 }
@@ -23,9 +23,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::num x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   core::List<self::Base> list = core::_GrowableList::_literal2<self::Base>(new self::Me::•(), new self::You::•());
@@ -61,7 +61,7 @@
 
 constants  {
   #C1 = #push=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #float=
 }
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 ce17c91..568a9e4 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,9 +7,9 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::int x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return core::print("${this.{core::Object::runtimeType}{core::Type}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}}");
 }
@@ -23,9 +23,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::num x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   core::List<self::Base> list = <self::Base>[new self::Me::•(), new self::You::•()];
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.modular.expect
index ce17c91..568a9e4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.modular.expect
@@ -7,9 +7,9 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::int x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return core::print("${this.{core::Object::runtimeType}{core::Type}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}}");
 }
@@ -23,9 +23,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::num x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   core::List<self::Base> list = <self::Base>[new self::Me::•(), new self::You::•()];
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 43fa244..fd4cedf 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>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration 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>{}))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     ;
 }
@@ -20,9 +20,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>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration 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>{}))){(core::Invocation) → 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 ea0f229..d47ec21 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,9 +7,9 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::int x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return core::print("${this.{core::Object::runtimeType}{core::Type}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}}");
 }
@@ -23,9 +23,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder set float(covariant-by-declaration core::num x) → void
-    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   core::List<self::Base> list = core::_GrowableList::_literal2<self::Base>(new self::Me::•(), new self::You::•());
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect
index 2647443..2b4a210 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.expect
@@ -18,7 +18,7 @@
     return arg is core::String && arg{core::String}.{core::String::isNotEmpty}{core::bool};
   }
   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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2
@@ -31,14 +31,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4}) → 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>{#C5: 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>{#C5: amount}))){(core::Invocation) → dynamic} 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 /* signature-type: (core::String, {amount: core::double, yetAnother: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4, core::double? yetAnother = #C4}) → 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>{#C5: amount, #C6: 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>{#C5: amount, #C6: yetAnother}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 abstract class HungryCat extends core::Object {
   synthetic constructor •() → self::HungryCat
@@ -50,8 +50,8 @@
 
 constants  {
   #C1 = #eatFood
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = null
   #C5 = #amount
   #C6 = #yetAnother
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect
index 697cfdd..488fbc1f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     return arg is core::String && arg{core::String}.{core::String::isNotEmpty}{core::bool};
   }
   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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2
@@ -31,14 +31,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4}) → 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>{#C5: 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>{#C5: amount}))){(core::Invocation) → dynamic} 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 /* signature-type: (core::String, {amount: core::double, yetAnother: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4, core::double? yetAnother = #C4}) → 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>{#C5: amount, #C6: 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>{#C5: amount, #C6: yetAnother}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 abstract class HungryCat extends core::Object {
   synthetic constructor •() → self::HungryCat
@@ -50,8 +50,8 @@
 
 constants  {
   #C1 = #eatFood
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = null
   #C5 = #amount
   #C6 = #yetAnother
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 2647443..9eae067 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
@@ -18,7 +18,7 @@
     return arg is core::String && arg{core::String}.{core::String::isNotEmpty}{core::bool};
   }
   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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2
@@ -31,14 +31,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4}) → 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>{#C5: 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>{#C5: amount}))){(core::Invocation) → dynamic} 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 /* signature-type: (core::String, {amount: core::double, yetAnother: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4, core::double? yetAnother = #C4}) → 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>{#C5: amount, #C6: 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>{#C5: amount, #C6: yetAnother}))){(core::Invocation) → dynamic} 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.modular.expect
index 2647443..9eae067 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.modular.expect
@@ -18,7 +18,7 @@
     return arg is core::String && arg{core::String}.{core::String::isNotEmpty}{core::bool};
   }
   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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2
@@ -31,14 +31,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4}) → 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>{#C5: 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>{#C5: amount}))){(core::Invocation) → dynamic} 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 /* signature-type: (core::String, {amount: core::double, yetAnother: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4, core::double? yetAnother = #C4}) → 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>{#C5: amount, #C6: 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>{#C5: amount, #C6: yetAnother}))){(core::Invocation) → dynamic} 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 3fa1f09..594135f 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
@@ -14,7 +14,7 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2
@@ -25,13 +25,13 @@
   synthetic constructor •() → self::MockCat3
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = null}) → 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat4 extends self::MockCat2 implements self::HungryCat {
   synthetic constructor •() → self::MockCat4
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double, yetAnother: core::double}) → core::bool */ 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}))){(core::Invocation) → dynamic} 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 697cfdd..db7de91cc 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
@@ -18,7 +18,7 @@
     return arg is core::String && arg{core::String}.{core::String::isNotEmpty}{core::bool};
   }
   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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::bool;
 }
 class MockCat2 extends self::MockCat {
   synthetic constructor •() → self::MockCat2
@@ -31,14 +31,14 @@
     : super self::MockCat2::•()
     ;
   no-such-method-forwarder method /* signature-type: (core::String, {amount: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4}) → 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>{#C5: 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>{#C5: amount}))){(core::Invocation) → dynamic} 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 /* signature-type: (core::String, {amount: core::double, yetAnother: core::double}) → core::bool */ eatFood(core::String food, {core::double? amount = #C4, core::double? yetAnother = #C4}) → 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>{#C5: amount, #C6: 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>{#C5: amount, #C6: yetAnother}))){(core::Invocation) → dynamic} 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/access_abstract_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.expect
index b20c821..711093c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.expect
@@ -146,7 +146,7 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -215,7 +215,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -232,7 +232,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -297,7 +297,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -326,7 +326,7 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -460,7 +460,7 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
@@ -495,7 +495,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///access_abstract_nsm.dart::_inaccessibleMethod1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.transformed.expect
index 2a50f52..a9266d9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.strong.transformed.expect
@@ -146,7 +146,7 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -211,7 +211,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -228,7 +228,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -289,7 +289,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -318,7 +318,7 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassWith3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -444,7 +444,7 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
@@ -479,7 +479,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///access_abstract_nsm.dart::_inaccessibleMethod1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.expect
index b20c821..cda3560 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.expect
@@ -146,7 +146,7 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -215,7 +215,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -232,7 +232,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -297,7 +297,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -326,7 +326,7 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -460,7 +460,7 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.modular.expect
index b20c821..cda3560 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.modular.expect
@@ -146,7 +146,7 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -215,7 +215,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -232,7 +232,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -297,7 +297,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -326,7 +326,7 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -460,7 +460,7 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.outline.expect
index c225123..d4097f9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.outline.expect
@@ -144,7 +144,7 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -204,7 +204,7 @@
   synthetic constructor •() → self::SubAbstractSubClass2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -218,7 +218,7 @@
   synthetic constructor •() → self::SubClassImplements2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -274,7 +274,7 @@
   synthetic constructor •() → self::SubAbstractSubClassImplements2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -300,7 +300,7 @@
   synthetic constructor •() → self::SubClassWith2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -422,7 +422,7 @@
   synthetic constructor •() → self::SubAbstractSubClassWith2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.transformed.expect
index 2a50f52..d9dffbe 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_abstract_nsm.dart.weak.transformed.expect
@@ -146,7 +146,7 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -211,7 +211,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -228,7 +228,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -289,7 +289,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -318,7 +318,7 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassWith3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -444,7 +444,7 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.expect
index 8a759c2..f4eb99e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.expect
@@ -64,9 +64,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -157,9 +157,9 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -178,9 +178,9 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClassOverride3
@@ -198,7 +198,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -263,7 +263,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -294,9 +294,9 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -436,9 +436,9 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
@@ -474,8 +474,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///access_concrete_nsm.dart::_inaccessibleMethod1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #accessibleMethod
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.transformed.expect
index 5a41792..acc6ddd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.strong.transformed.expect
@@ -64,9 +64,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClass3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -153,9 +153,9 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -174,9 +174,9 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClassOverride3
@@ -194,7 +194,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -255,7 +255,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -286,9 +286,9 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClassWith3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -420,9 +420,9 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
@@ -458,8 +458,8 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///access_concrete_nsm.dart::_inaccessibleMethod1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #accessibleMethod
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.expect
index 8a759c2..b1bcc1b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.expect
@@ -64,9 +64,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -157,9 +157,9 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -178,9 +178,9 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClassOverride3
@@ -198,7 +198,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -263,7 +263,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -294,9 +294,9 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -436,9 +436,9 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.modular.expect
index 8a759c2..b1bcc1b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.modular.expect
@@ -64,9 +64,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -157,9 +157,9 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -178,9 +178,9 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClassOverride3
@@ -198,7 +198,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -263,7 +263,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -294,9 +294,9 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -436,9 +436,9 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.outline.expect
index f9a436f..9869364 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.outline.expect
@@ -62,9 +62,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -143,9 +143,9 @@
   synthetic constructor •() → self::SubAbstractSubClass2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -161,9 +161,9 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClassOverride3
@@ -178,7 +178,7 @@
   synthetic constructor •() → self::SubClassImplements2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -234,7 +234,7 @@
   synthetic constructor •() → self::SubAbstractSubClassImplements2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -262,9 +262,9 @@
   synthetic constructor •() → self::SubClassWith2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -392,9 +392,9 @@
   synthetic constructor •() → self::SubAbstractSubClassWith2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#accessibleMethod, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.transformed.expect
index 5a41792..f2c65f4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart.weak.transformed.expect
@@ -64,9 +64,9 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClass3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -153,9 +153,9 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -174,9 +174,9 @@
     ;
   abstract method noSuchMethod(core::Invocation invocation) → dynamic;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClassOverride3
@@ -194,7 +194,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClassImplements3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassImplements3&Object&SuperClass
@@ -255,7 +255,7 @@
     : super self::AbstractSubClassImplements2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
   synthetic constructor •() → self::SubAbstractSubClassImplements3
@@ -286,9 +286,9 @@
     : super self::_SubClassWith2&Object&NoSuchMethodClass::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _SubClassWith3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClassWith3&Object&SuperClass
@@ -420,9 +420,9 @@
     : super self::AbstractSubClassWith2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
   no-such-method-forwarder method accessibleMethod() → void
-    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
   synthetic constructor •() → self::SubAbstractSubClassWith3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.expect
index 45d7d97..f142734 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.expect
@@ -60,7 +60,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -125,7 +125,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -149,7 +149,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///access_no_nsm.dart::_inaccessibleMethod1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.transformed.expect
index ef99913..f417353 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.strong.transformed.expect
@@ -60,7 +60,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -121,7 +121,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
@@ -145,7 +145,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///access_no_nsm.dart::_inaccessibleMethod1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.expect
index 45d7d97..8199567 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.expect
@@ -60,7 +60,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -125,7 +125,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.modular.expect
index 45d7d97..8199567 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.modular.expect
@@ -60,7 +60,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -125,7 +125,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.outline.expect
index 02ebc55..90a51da 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.outline.expect
@@ -58,7 +58,7 @@
   synthetic constructor •() → self::SubClass2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -114,7 +114,7 @@
   synthetic constructor •() → self::SubAbstractSubClass2
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_inaccessibleMethod1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.transformed.expect
index ef99913..7ef06148 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/access_no_nsm.dart.weak.transformed.expect
@@ -60,7 +60,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 abstract class _SubClass3&Object&SuperClass extends core::Object implements acc::SuperClass /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_SubClass3&Object&SuperClass
@@ -121,7 +121,7 @@
     : super self::AbstractSubClass2::•()
     ;
   no-such-method-forwarder method _inaccessibleMethod1() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 class SubAbstractSubClass3 extends self::AbstractSubClass3 {
   synthetic constructor •() → self::SubAbstractSubClass3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
index ada0fb4..ce6eff9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 abstract class _C&A&B = self::A with self::B /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_C&A&B
@@ -39,7 +39,7 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
index cf231cd..a2ccba2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 abstract class _C&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_C&A&B
@@ -39,7 +39,7 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 ada0fb4..b8b55a9 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
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.modular.expect
index ada0fb4..b8b55a9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.modular.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
index 230bd70..a1a9bcc 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
@@ -19,7 +19,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   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>{}))){(core::Invocation) → 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 cf231cd..c889435 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
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method foo() → dynamic
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(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))){(core::Invocation) → dynamic} 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.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
index 373177b..d66893a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.expect
@@ -24,9 +24,9 @@
     : 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}))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
@@ -45,7 +45,7 @@
   #C3 = #hest
   #C4 = "baz"
   #C5 = 42
-  #C6 = <core::Type*>[]
+  #C6 = <core::Type>[]
   #C7 = <dynamic>[]
-  #C8 = <core::Symbol*, dynamic>{}
+  #C8 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
index f3a7d96..595289a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.strong.transformed.expect
@@ -24,9 +24,9 @@
     : 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}))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
@@ -45,7 +45,7 @@
   #C3 = #hest
   #C4 = "baz"
   #C5 = 42
-  #C6 = <core::Type*>[]
+  #C6 = <core::Type>[]
   #C7 = <dynamic>[]
-  #C8 = <core::Symbol*, dynamic>{}
+  #C8 = <core::Symbol, dynamic>{}
 }
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 373177b..888adb3 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
@@ -24,9 +24,9 @@
     : 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}))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.modular.expect
index 373177b..888adb3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.modular.expect
@@ -24,9 +24,9 @@
     : 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}))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
index 6ed360d..279c34d 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
@@ -14,9 +14,9 @@
   synthetic constructor •() → self::B
     ;
   no-such-method-forwarder method foo({has-declared-initializer 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}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method hest([has-declared-initializer 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>{}))){(core::Invocation) → 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 f3a7d96..1a498ff 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
@@ -24,9 +24,9 @@
     : 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}))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {
   self::B b = new self::B::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.expect
index 06d9f22..022243b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.expect
@@ -9,22 +9,22 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method abstractMethod1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod2(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
   no-such-method-forwarder method abstractMethod1(core::num n) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   abstract method abstractMethod2(core::int i) → void;
 }
 
 constants  {
   #C1 = #abstractMethod1
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #abstractMethod2
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.transformed.expect
index 988dd80..814383b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.strong.transformed.expect
@@ -9,22 +9,22 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method abstractMethod1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod2(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
   no-such-method-forwarder method abstractMethod1(core::num n) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(n)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(n)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   abstract method abstractMethod2(core::int i) → void;
 }
 
 constants  {
   #C1 = #abstractMethod1
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #abstractMethod2
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.expect
index 06d9f22..e7587ba 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.expect
@@ -9,16 +9,16 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method abstractMethod1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod2(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
   no-such-method-forwarder method abstractMethod1(core::num n) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   abstract method abstractMethod2(core::int i) → void;
 }
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.modular.expect
index 06d9f22..e7587ba 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.modular.expect
@@ -9,16 +9,16 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method abstractMethod1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod2(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
   no-such-method-forwarder method abstractMethod1(core::num n) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   abstract method abstractMethod2(core::int i) → void;
 }
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.outline.expect
index fdfe762..2717ddc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.outline.expect
@@ -8,15 +8,15 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     ;
   no-such-method-forwarder method abstractMethod1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod2(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     ;
   no-such-method-forwarder method abstractMethod1(core::num n) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#abstractMethod1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
   abstract method abstractMethod2(core::int i) → void;
 }
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.transformed.expect
index 988dd80..d9bbf72 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/different_signatures.dart.weak.transformed.expect
@@ -9,16 +9,16 @@
   method noSuchMethod(core::Invocation invocation) → dynamic
     return 42;
   no-such-method-forwarder method abstractMethod1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method abstractMethod2(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class SubClass extends self::Class {
   synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
   no-such-method-forwarder method abstractMethod1(core::num n) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(n)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(n)), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   abstract method abstractMethod2(core::int i) → void;
 }
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
index 0409357..f90a6ec 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.expect
@@ -21,13 +21,13 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
index 0409357..f90a6ec 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.strong.transformed.expect
@@ -21,13 +21,13 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 0409357..2f49d88 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
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.modular.expect
index 0409357..2f49d88 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.modular.expect
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 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 bfb23fb..7eac8d7 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
@@ -18,7 +18,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   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>{}))){(core::Invocation) → 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 0409357..2f49d88 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
@@ -21,7 +21,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect
index 7d1a4f1..7edcbab 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.expect
@@ -19,11 +19,11 @@
     ;
   method noSuchMethod(core::Invocation _) → dynamic {}
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method /* signature-type: (core::int, {y: core::String, z: core::double}) → void */ 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}))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
 }
 class C extends self::B {
   synthetic constructor •() → self::C
@@ -35,15 +35,15 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateField() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateField(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder get _privateGetter() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _privateMethod() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateSetter(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -76,9 +76,9 @@
 constants  {
   #C1 = null
   #C2 = #bar
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = <dynamic>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #baz
   #C7 = #y
   #C8 = #z
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect
index f49ae92..ac3a202 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.strong.transformed.expect
@@ -19,11 +19,11 @@
     ;
   method noSuchMethod(core::Invocation _) → dynamic {}
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method /* signature-type: (core::int, {y: core::String, z: core::double}) → void */ 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}))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
 }
 class C extends self::B {
   synthetic constructor •() → self::C
@@ -35,15 +35,15 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateField() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateField(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder get _privateGetter() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _privateMethod() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateSetter(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -76,9 +76,9 @@
 constants  {
   #C1 = null
   #C2 = #bar
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = <dynamic>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #baz
   #C7 = #y
   #C8 = #z
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 7d1a4f1..93e4fb8 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
@@ -19,11 +19,11 @@
     ;
   method noSuchMethod(core::Invocation _) → dynamic {}
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method /* signature-type: (core::int, {y: core::String, z: core::double}) → void */ 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}))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
 }
 class C extends self::B {
   synthetic constructor •() → self::C
@@ -35,15 +35,15 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateField() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateField(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder get _privateGetter() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _privateMethod() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateSetter(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.modular.expect
index 7d1a4f1..93e4fb8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.modular.expect
@@ -19,11 +19,11 @@
     ;
   method noSuchMethod(core::Invocation _) → dynamic {}
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method /* signature-type: (core::int, {y: core::String, z: core::double}) → void */ 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}))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
 }
 class C extends self::B {
   synthetic constructor •() → self::C
@@ -35,15 +35,15 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateField() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateField(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder get _privateGetter() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _privateMethod() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateSetter(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 58c3c94..dcf5a6d 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
@@ -18,11 +18,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   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>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method /* signature-type: (core::int, {y: core::String, z: core::double}) → void */ 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}))){(core::Invocation) → dynamic};
   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>{}))){(core::Invocation) → dynamic};
 }
 class C extends self::B {
   synthetic constructor •() → self::C
@@ -32,15 +32,15 @@
   synthetic constructor •() → self::E
     ;
   no-such-method-forwarder get _privateField() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_privateField, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_privateField, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder set _privateField(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
   no-such-method-forwarder get _privateGetter() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_privateGetter, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_privateGetter, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   no-such-method-forwarder method _privateMethod() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_privateMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 _privateSetter(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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>{})));
 }
 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 f49ae92..68a63e8 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
@@ -19,11 +19,11 @@
     ;
   method noSuchMethod(core::Invocation _) → dynamic {}
   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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method /* signature-type: (core::int, {y: core::String, z: core::double}) → void */ 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}))){(core::Invocation) → dynamic};
   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))){(core::Invocation) → dynamic};
 }
 class C extends self::B {
   synthetic constructor •() → self::C
@@ -35,15 +35,15 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder get _privateField() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C10, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateField(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C11, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder get _privateGetter() → core::int
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C12, 1, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder method _privateMethod() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C13, 0, #C3, #C4, core::Map::unmodifiable<core::Symbol, dynamic>(#C5)));
   no-such-method-forwarder set _privateSetter(core::int value) → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C14, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
index 4074455..ca9dedd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,13 +29,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
index d077fa9..94dacdc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&A extends core::Object implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,13 +29,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 4074455..eddaeb3 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
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,7 +29,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.modular.expect
index 4074455..eddaeb3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.modular.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,7 +29,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))){(core::Invocation) → dynamic};
 }
 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 cd5d26c..4577dd3 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
@@ -13,7 +13,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>{}))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A
@@ -26,7 +26,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>{}))){(core::Invocation) → 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 d077fa9..498079f 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
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&A extends core::Object implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&A
@@ -29,7 +29,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.expect
index d0db45f..ab993ee 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.expect
@@ -23,11 +23,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1() → dynamic
-    return this.{self::Super::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::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method2(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method3(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   method method4(core::int i) → dynamic {}
 }
 abstract class Abstract extends self::Super {
@@ -42,17 +42,17 @@
     ;
   abstract method method1() → dynamic;
   no-such-method-forwarder method method3(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   abstract method method4(core::num i) → dynamic;
   no-such-method-forwarder method method2(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 
 constants  {
   #C1 = #method1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #method2
   #C6 = #method3
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.transformed.expect
index 1e228e2..b3fe045 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.strong.transformed.expect
@@ -23,11 +23,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1() → dynamic
-    return this.{self::Super::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::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method2(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method3(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   method method4(core::int i) → dynamic {}
 }
 abstract class Abstract extends self::Super {
@@ -42,17 +42,17 @@
     ;
   abstract method method1() → dynamic;
   no-such-method-forwarder method method3(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   abstract method method4(core::num i) → dynamic;
   no-such-method-forwarder method method2(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 
 constants  {
   #C1 = #method1
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #method2
   #C6 = #method3
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.expect
index d0db45f..817686b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.expect
@@ -23,11 +23,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1() → dynamic
-    return this.{self::Super::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::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method2(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method3(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   method method4(core::int i) → dynamic {}
 }
 abstract class Abstract extends self::Super {
@@ -42,10 +42,10 @@
     ;
   abstract method method1() → dynamic;
   no-such-method-forwarder method method3(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   abstract method method4(core::num i) → dynamic;
   no-such-method-forwarder method method2(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.modular.expect
index d0db45f..817686b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.modular.expect
@@ -23,11 +23,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1() → dynamic
-    return this.{self::Super::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::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method2(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method3(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   method method4(core::int i) → dynamic {}
 }
 abstract class Abstract extends self::Super {
@@ -42,10 +42,10 @@
     ;
   abstract method method1() → dynamic;
   no-such-method-forwarder method method3(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   abstract method method4(core::num i) → dynamic;
   no-such-method-forwarder method method2(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.outline.expect
index 0828f73..d2b7e7b3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.outline.expect
@@ -22,11 +22,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   no-such-method-forwarder method method1() → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method1, 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::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method1, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method2(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method3(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method3, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   method method4(core::int i) → dynamic
     ;
 }
@@ -40,10 +40,10 @@
     ;
   abstract method method1() → dynamic;
   no-such-method-forwarder method method3(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method3, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   abstract method method4(core::num i) → dynamic;
   no-such-method-forwarder method method2(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#method2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.transformed.expect
index 1e228e2..60a5a57 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_abstract.dart.weak.transformed.expect
@@ -23,11 +23,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1() → dynamic
-    return this.{self::Super::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::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method2(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   no-such-method-forwarder method method3(core::int i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   method method4(core::int i) → dynamic {}
 }
 abstract class Abstract extends self::Super {
@@ -42,10 +42,10 @@
     ;
   abstract method method1() → dynamic;
   no-such-method-forwarder method method3(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
   abstract method method4(core::num i) → dynamic;
   no-such-method-forwarder method method2(core::num i) → dynamic
-    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::Super::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(i)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} dynamic;
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.expect
index 7b62ab6..7bdbb62 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.expect
@@ -17,7 +17,7 @@
     self::console = "C";
   }
   no-such-method-forwarder get g() → core::String?
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
 }
 abstract class M extends self::A /*isMixinDeclaration*/  {
   method test() → dynamic {
@@ -55,7 +55,7 @@
 
 constants  {
   #C1 = #g
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.transformed.expect
index 7571251..57b5888 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
     self::console = "C";
   }
   no-such-method-forwarder get g() → core::String?
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
 }
 abstract class M extends self::A /*isMixinDeclaration*/  {
   method test() → dynamic {
@@ -57,7 +57,7 @@
 
 constants  {
   #C1 = #g
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.expect
index 7b62ab6..26badf8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.expect
@@ -17,7 +17,7 @@
     self::console = "C";
   }
   no-such-method-forwarder get g() → core::String?
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
 }
 abstract class M extends self::A /*isMixinDeclaration*/  {
   method test() → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.modular.expect
index 7b62ab6..26badf8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.modular.expect
@@ -17,7 +17,7 @@
     self::console = "C";
   }
   no-such-method-forwarder get g() → core::String?
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
 }
 abstract class M extends self::A /*isMixinDeclaration*/  {
   method test() → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.outline.expect
index 5ef6039..1bf081c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.outline.expect
@@ -14,7 +14,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   no-such-method-forwarder get g() → core::String?
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#g, 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::C::noSuchMethod}(new core::_InvocationMirror::_withType(#g, 1, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
 }
 abstract class M extends self::A /*isMixinDeclaration*/  {
   method test() → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.transformed.expect
index 7571251..cd08d4c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/inherited_through_mixin_application.dart.weak.transformed.expect
@@ -17,7 +17,7 @@
     self::console = "C";
   }
   no-such-method-forwarder get g() → core::String?
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String?;
 }
 abstract class M extends self::A /*isMixinDeclaration*/  {
   method test() → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
index fc6e58f..258e6dc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.expect
@@ -21,13 +21,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
index fc6e58f..258e6dc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.strong.transformed.expect
@@ -21,13 +21,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 fc6e58f..4117572 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
@@ -21,7 +21,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.modular.expect
index fc6e58f..4117572 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.modular.expect
@@ -21,7 +21,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))){(core::Invocation) → dynamic};
 }
 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 ab66687..5b02c4c 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
@@ -18,7 +18,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>{}))){(core::Invocation) → 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 fc6e58f..4117572 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
@@ -21,7 +21,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
index 3ae5670..949ba9c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 mixin class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_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))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,13 +44,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
index 272e0b5f..4ed39e6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
   no-such-method-forwarder method foo() → void
-    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::I::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 mixin class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_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))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&M extends core::Object implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,13 +44,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 3ae5670..dbdd84d 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))){(core::Invocation) → dynamic};
 }
 mixin class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_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))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,7 +44,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.modular.expect
index 3ae5670..dbdd84d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.modular.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))){(core::Invocation) → dynamic};
 }
 mixin class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_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))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,7 +44,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))){(core::Invocation) → dynamic};
 }
 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 5f1294e..b970984 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>{}))){(core::Invocation) → dynamic};
 }
 mixin class M extends core::Object {
   synthetic constructor •() → self::M
@@ -27,7 +27,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>{}))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&M = core::Object with self::M /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M
@@ -40,7 +40,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>{}))){(core::Invocation) → 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 272e0b5f..545c340 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))){(core::Invocation) → dynamic};
 }
 mixin class M extends core::Object {
   synthetic constructor •() → self::M
@@ -30,7 +30,7 @@
     : super self::_A&Object&M::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::_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))){(core::Invocation) → dynamic};
 }
 abstract class _B&Object&M extends core::Object implements self::M /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_B&Object&M
@@ -44,7 +44,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.strong.expect
index 16f9347..253b4fb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.strong.expect
@@ -36,11 +36,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method2(covariant-by-declaration core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method3(core::num n) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class Class = self::Super with self::Mixin implements self::Interface {
   synthetic constructor •() → self::Class
@@ -52,13 +52,13 @@
     return super.{self::Super::method2}(i);
   abstract mixin-stub method method3(core::num n) → void; -> self::Mixin::method3
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 
 constants  {
   #C1 = #method1
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
   #C4 = #method2
   #C5 = #method3
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.expect
index 16f9347..1a49438 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.expect
@@ -36,11 +36,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method2(covariant-by-declaration core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method3(core::num n) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class Class = self::Super with self::Mixin implements self::Interface {
   synthetic constructor •() → self::Class
@@ -52,7 +52,7 @@
     return super.{self::Super::method2}(i);
   abstract mixin-stub method method3(core::num n) → void; -> self::Mixin::method3
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.modular.expect
index 16f9347..1a49438 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.modular.expect
@@ -36,11 +36,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method2(covariant-by-declaration core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method3(core::num n) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 class Class = self::Super with self::Mixin implements self::Interface {
   synthetic constructor •() → self::Class
@@ -52,7 +52,7 @@
     return super.{self::Super::method2}(i);
   abstract mixin-stub method method3(core::num n) → void; -> self::Mixin::method3
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(#C3))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.outline.expect
index a620c40..6e00416 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/mixin_nsm.dart.weak.outline.expect
@@ -35,11 +35,11 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#method1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method2(covariant-by-declaration core::int i) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#method2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#method2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method3(core::num n) → void
-    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Mixin::noSuchMethod}(new core::_InvocationMirror::_withType(#method3, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[n]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class Class = self::Super with self::Mixin implements self::Interface {
   synthetic constructor •() → self::Class
@@ -51,7 +51,7 @@
     return super.{self::Super::method2}(i);
   abstract mixin-stub method method3(core::num n) → void; -> self::Mixin::method3
   no-such-method-forwarder method method1(core::int i) → void
-    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::Class::noSuchMethod}(new core::_InvocationMirror::_withType(#method1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[i]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect
index 65e81fe..a2f0fe5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.expect
@@ -33,16 +33,16 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   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))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #bar
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect
index 0bada23..1bca827 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.strong.transformed.expect
@@ -33,16 +33,16 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   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))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #bar
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #foo=
 }
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 65e81fe..fa1b8fa3 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
@@ -33,9 +33,9 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   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))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.modular.expect
index 65e81fe..fa1b8fa3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.modular.expect
@@ -33,9 +33,9 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   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))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic};
 }
 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 b7ba4f8..c35c62b 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
@@ -32,9 +32,9 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   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>{}))){(core::Invocation) → 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>{}))){(core::Invocation) → 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 0bada23..97857a2 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
@@ -33,9 +33,9 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   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))){(core::Invocation) → dynamic} 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
index 8a113d1..30e4699 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.expect
@@ -15,13 +15,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
index 8a113d1..30e4699 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 8a113d1..c988695 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
@@ -15,7 +15,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.modular.expect
index 8a113d1..c988695 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.modular.expect
@@ -15,7 +15,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))){(core::Invocation) → dynamic};
 }
 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 4b2f921..0ab96f2 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
@@ -13,7 +13,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>{}))){(core::Invocation) → 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 8a113d1..c988695 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
@@ -15,7 +15,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
index 4312e2c..2ad8424 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class D extends self::C {
   synthetic constructor •() → self::D
@@ -31,7 +31,7 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
index 4312e2c..2ad8424 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class D extends self::C {
   synthetic constructor •() → self::D
@@ -31,7 +31,7 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 4312e2c..9fcbf4c 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
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.modular.expect
index 4312e2c..9fcbf4c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.modular.expect
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
index 9994349..db4ce8a 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
@@ -17,7 +17,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>{}))){(core::Invocation) → 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 4312e2c..9fcbf4c 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
@@ -20,7 +20,7 @@
     : super self::B::•()
     ;
   no-such-method-forwarder method foo() → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class D extends self::C {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
index ce79263..14348bb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.expect
@@ -14,12 +14,12 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #call
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
index ff04db0..a375aa2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.strong.transformed.expect
@@ -14,12 +14,12 @@
     : 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #call
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
 }
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 ce79263..565ec03 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
@@ -14,7 +14,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.modular.expect
index ce79263..565ec03 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.modular.expect
@@ -14,7 +14,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 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 703723f..8843f5a 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
@@ -12,7 +12,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>{}))){(core::Invocation) → 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 ff04db0..e0e4d69 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
@@ -14,7 +14,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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
index d480adf..9e121aa 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
@@ -22,13 +22,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
index 6ed0377..bca6452 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
@@ -23,13 +23,13 @@
     : 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 d480adf..4f0bf60 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
@@ -22,7 +22,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.modular.expect
index d480adf..4f0bf60 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.modular.expect
@@ -22,7 +22,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))){(core::Invocation) → dynamic};
 }
 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 fbe1b6b..94499ce 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
@@ -19,7 +19,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>{}))){(core::Invocation) → 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 6ed0377..e055ec7 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
@@ -23,7 +23,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
index ec6cebf..60dcf5b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
@@ -44,7 +44,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///private.dart::_hest
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
index ec6cebf..60dcf5b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
 }
 static method main() → dynamic {}
 
@@ -44,7 +44,7 @@
 
 constants  {
   #C1 = #org-dartlang-testcase:///private.dart::_hest
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 ec6cebf..25e7db9 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
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.modular.expect
index ec6cebf..25e7db9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.modular.expect
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 89d223f..19bb953 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
@@ -15,7 +15,7 @@
   synthetic constructor •() → self::Bar
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -23,7 +23,7 @@
   method _hest() → dynamic
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#_hest, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{})));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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 ec6cebf..25e7db9 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
@@ -17,7 +17,7 @@
     : super self::Foo::•()
     ;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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
@@ -26,7 +26,7 @@
   method _hest() → dynamic
     return null;
   no-such-method-forwarder method _hest() → void
-    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4)));
+    return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, 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.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
index 77cfc78..2ba6e68 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.expect
@@ -15,13 +15,13 @@
   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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #org-dartlang-testcase:///private_same.dart::_foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
index 77cfc78..2ba6e68 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.strong.transformed.expect
@@ -15,13 +15,13 @@
   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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #org-dartlang-testcase:///private_same.dart::_foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 77cfc78..5eafa5d 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
@@ -15,7 +15,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.modular.expect
index 77cfc78..5eafa5d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.modular.expect
@@ -15,7 +15,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))){(core::Invocation) → dynamic};
 }
 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 08c7d1c..78d2ef6 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
@@ -13,7 +13,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>{}))){(core::Invocation) → 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 77cfc78..5eafa5d 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
@@ -15,7 +15,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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.expect
index 8b783ab..a7a23e1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m() → core::int
-    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} core::int;
+    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} core::int;
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
 }
@@ -23,7 +23,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method m() → core::int
-    return this.{self::MA::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::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method throws(() → void f) → dynamic {
   try {
@@ -42,7 +42,7 @@
 
 constants  {
   #C1 = #m
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.transformed.expect
index a2d71e0..ef6e057 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m() → core::int
-    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} core::int;
+    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} core::int;
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
 }
@@ -23,7 +23,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "M";
   no-such-method-forwarder method m() → core::int
-    return this.{self::MA::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::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method throws(() → void f) → dynamic {
   try {
@@ -42,7 +42,7 @@
 
 constants  {
   #C1 = #m
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.expect
index 8b783ab..5ddba7c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m() → core::int
-    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} core::int;
+    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} core::int;
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
 }
@@ -23,7 +23,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method m() → core::int
-    return this.{self::MA::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::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method throws(() → void f) → dynamic {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.modular.expect
index 8b783ab..5ddba7c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.modular.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m() → core::int
-    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} core::int;
+    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} core::int;
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
 }
@@ -23,7 +23,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method m() → core::int
-    return this.{self::MA::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::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method throws(() → void f) → dynamic {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.outline.expect
index fc14747..7ec786e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.outline.expect
@@ -6,7 +6,7 @@
   synthetic constructor •() → self::C
     ;
   no-such-method-forwarder method m() → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#m, 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::C::noSuchMethod}(new core::_InvocationMirror::_withType(#m, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation i) → dynamic
     ;
 }
@@ -22,7 +22,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method m() → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#m, 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::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#m, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method throws(() → void f) → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.transformed.expect
index a2d71e0..bff0a3c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53640.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m() → core::int
-    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} core::int;
+    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} core::int;
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
 }
@@ -23,7 +23,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "M";
   no-such-method-forwarder method m() → core::int
-    return this.{self::MA::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::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method throws(() → void f) → dynamic {
   try {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.expect
index 00a6cf1..6063938 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation inv) → dynamic {
     for (core::int i = 0; i.{core::num::<}(inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       self::log = self::log.{core::String::+}("${inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(i){(core::int) → dynamic}};"){(core::String) → core::String};
@@ -41,9 +41,9 @@
   mixin-super-stub method noSuchMethod(core::Invocation inv) → dynamic
     return super.{self::M::noSuchMethod}(inv);
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static field core::String log = "";
 static method expect(dynamic expected, dynamic actual) → dynamic {
@@ -67,8 +67,8 @@
 constants  {
   #C1 = "s1"
   #C2 = #m1
-  #C3 = <core::Type*>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C3 = <core::Type>[]
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = "s2"
   #C6 = #m2
   #C7 = #s
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.transformed.expect
index 026891b..09847d6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.strong.transformed.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation inv) → dynamic {
     for (core::int i = 0; i.{core::num::<}(inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       self::log = self::log.{core::String::+}("${inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(i){(core::int) → dynamic}};"){(core::String) → core::String};
@@ -48,9 +48,9 @@
     return 42;
   }
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static field core::String log = "";
 static method expect(dynamic expected, dynamic actual) → dynamic {
@@ -74,8 +74,8 @@
 constants  {
   #C1 = "s1"
   #C2 = #m1
-  #C3 = <core::Type*>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C3 = <core::Type>[]
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = "s2"
   #C6 = #m2
   #C7 = #s
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.expect
index 00a6cf1..454fa12 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation inv) → dynamic {
     for (core::int i = 0; i.{core::num::<}(inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       self::log = self::log.{core::String::+}("${inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(i){(core::int) → dynamic}};"){(core::String) → core::String};
@@ -41,9 +41,9 @@
   mixin-super-stub method noSuchMethod(core::Invocation inv) → dynamic
     return super.{self::M::noSuchMethod}(inv);
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static field core::String log = "";
 static method expect(dynamic expected, dynamic actual) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.modular.expect
index 00a6cf1..454fa12 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.modular.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation inv) → dynamic {
     for (core::int i = 0; i.{core::num::<}(inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       self::log = self::log.{core::String::+}("${inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(i){(core::int) → dynamic}};"){(core::String) → core::String};
@@ -41,9 +41,9 @@
   mixin-super-stub method noSuchMethod(core::Invocation inv) → dynamic
     return super.{self::M::noSuchMethod}(inv);
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static field core::String log = "";
 static method expect(dynamic expected, dynamic actual) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.outline.expect
index b40aed8..fde27a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.outline.expect
@@ -6,9 +6,9 @@
   synthetic constructor •() → self::C
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = "s1"]) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#m1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#m1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = "s2"}) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#m2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#m2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation inv) → dynamic
     ;
 }
@@ -25,9 +25,9 @@
   mixin-super-stub method noSuchMethod(core::Invocation inv) → dynamic
     return super.{self::M::noSuchMethod}(inv);
   no-such-method-forwarder method m1(core::int v, [has-declared-initializer core::String s]) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#m1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#m1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {has-declared-initializer core::String s}) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#m2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#m2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static field core::String log;
 static method expect(dynamic expected, dynamic actual) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.transformed.expect
index 026891b..c1ea8e1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart.weak.transformed.expect
@@ -8,9 +8,9 @@
     : super core::Object::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   method noSuchMethod(core::Invocation inv) → dynamic {
     for (core::int i = 0; i.{core::num::<}(inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       self::log = self::log.{core::String::+}("${inv.{core::Invocation::positionalArguments}{core::List<dynamic>}.{core::List::[]}(i){(core::int) → dynamic}};"){(core::String) → core::String};
@@ -48,9 +48,9 @@
     return 42;
   }
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
   no-such-method-forwarder method m2(core::int v, {core::String s = #C5}) → core::int
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static field core::String log = "";
 static method expect(dynamic expected, dynamic actual) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.expect
index 88d501c..640b7f5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
   no-such-method-forwarder method foo() → core::String
-    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} core::String;
+    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} core::String;
 }
 abstract class M extends core::Object /*isMixinDeclaration*/  {
   method noSuchMethod(core::Invocation i) → dynamic
@@ -23,7 +23,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method foo() → core::String
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → void {
   self::C c = new self::C::•();
@@ -36,7 +36,7 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.transformed.expect
index 3ba66dd..8ca127e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
   no-such-method-forwarder method foo() → core::String
-    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} core::String;
+    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} core::String;
 }
 abstract class M extends core::Object /*isMixinDeclaration*/  {
   method noSuchMethod(core::Invocation i) → dynamic
@@ -23,7 +23,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "M";
   no-such-method-forwarder method foo() → core::String
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → void {
   self::C c = new self::C::•();
@@ -36,7 +36,7 @@
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.expect
index 88d501c..9e70116 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
   no-such-method-forwarder method foo() → core::String
-    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} core::String;
+    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} core::String;
 }
 abstract class M extends core::Object /*isMixinDeclaration*/  {
   method noSuchMethod(core::Invocation i) → dynamic
@@ -23,7 +23,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method foo() → core::String
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → void {
   self::C c = new self::C::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.modular.expect
index 88d501c..9e70116 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.modular.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
   no-such-method-forwarder method foo() → core::String
-    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} core::String;
+    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} core::String;
 }
 abstract class M extends core::Object /*isMixinDeclaration*/  {
   method noSuchMethod(core::Invocation i) → dynamic
@@ -23,7 +23,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method foo() → core::String
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → void {
   self::C c = new self::C::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.outline.expect
index cb674cb..78ffa14 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.outline.expect
@@ -8,7 +8,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     ;
   no-such-method-forwarder method foo() → core::String
-    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} core::String;
+    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} core::String;
 }
 abstract class M extends core::Object /*isMixinDeclaration*/  {
   method noSuchMethod(core::Invocation i) → dynamic
@@ -22,7 +22,7 @@
   mixin-super-stub method noSuchMethod(core::Invocation i) → dynamic
     return super.{self::M::noSuchMethod}(i);
   no-such-method-forwarder method foo() → core::String
-    return this.{self::MA::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::String;
+    return this.{self::MA::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::String;
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.transformed.expect
index 3ba66dd..6466088 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53676.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "C";
   no-such-method-forwarder method foo() → core::String
-    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} core::String;
+    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} core::String;
 }
 abstract class M extends core::Object /*isMixinDeclaration*/  {
   method noSuchMethod(core::Invocation i) → dynamic
@@ -23,7 +23,7 @@
   method noSuchMethod(core::Invocation i) → dynamic
     return "M";
   no-such-method-forwarder method foo() → core::String
-    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::MA::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → void {
   self::C c = new self::C::•();
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.expect
index e65941e..1ecf83a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.expect
@@ -21,13 +21,13 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method /* signature-type: (core::int, {s: core::String}) → core::String */ m2(core::int v, {core::String? s = #C2}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m3(core::int v, {required core::String s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m4(core::int v, [covariant-by-declaration core::String s = #C2]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → dynamic {
   (core::int, [core::String]) → core::String m1 = new self::MA::•().{self::MA::m1}{(core::int, [core::String]) → core::String};
@@ -44,8 +44,8 @@
   #C1 = "s1"
   #C2 = null
   #C3 = #m1
-  #C4 = <core::Type*>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Type>[]
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #m2
   #C7 = #s
   #C8 = #m3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.transformed.expect
index 5d601ee..f7fb8ac 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.strong.transformed.expect
@@ -21,13 +21,13 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method /* signature-type: (core::int, {s: core::String}) → core::String */ m2(core::int v, {core::String? s = #C2}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m3(core::int v, {required core::String s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m4(core::int v, [covariant-by-declaration core::String s = #C2]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → dynamic {
   (core::int, [core::String]) → core::String m1 = new self::MA::•().{self::MA::m1}{(core::int, [core::String]) → core::String};
@@ -44,8 +44,8 @@
   #C1 = "s1"
   #C2 = null
   #C3 = #m1
-  #C4 = <core::Type*>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Type>[]
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #m2
   #C7 = #s
   #C8 = #m3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.expect
index e65941e..f3e77a9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.expect
@@ -21,13 +21,13 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method /* signature-type: (core::int, {s: core::String}) → core::String */ m2(core::int v, {core::String? s = #C2}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m3(core::int v, {required core::String s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m4(core::int v, [covariant-by-declaration core::String s = #C2]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → dynamic {
   (core::int, [core::String]) → core::String m1 = new self::MA::•().{self::MA::m1}{(core::int, [core::String]) → core::String};
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.modular.expect
index e65941e..f3e77a9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.modular.expect
@@ -21,13 +21,13 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method /* signature-type: (core::int, {s: core::String}) → core::String */ m2(core::int v, {core::String? s = #C2}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m3(core::int v, {required core::String s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m4(core::int v, [covariant-by-declaration core::String s = #C2]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → dynamic {
   (core::int, [core::String]) → core::String m1 = new self::MA::•().{self::MA::m1}{(core::int, [core::String]) → core::String};
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.outline.expect
index ee16e73..15e2d8a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.outline.expect
@@ -19,13 +19,13 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method m1(core::int v, [has-declared-initializer core::String s]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m1, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method /* signature-type: (core::int, {s: core::String}) → core::String */ m2(core::int v, {core::String? s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m2, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m2, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m3(core::int v, {required core::String s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m3, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v]), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#s: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m4(core::int v, [covariant-by-declaration core::String s]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m4, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#m4, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[v, s]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.transformed.expect
index 5d601ee..6ee4170 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/regress_53677.dart.weak.transformed.expect
@@ -21,13 +21,13 @@
     : super self::A::•()
     ;
   no-such-method-forwarder method m1(core::int v, [core::String s = #C1]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method /* signature-type: (core::int, {s: core::String}) → core::String */ m2(core::int v, {core::String? s = #C2}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m3(core::int v, {required core::String s}) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(v)), core::Map::unmodifiable<core::Symbol, dynamic>(<core::Symbol, dynamic>{#C7: s}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
   no-such-method-forwarder method m4(core::int v, [covariant-by-declaration core::String s = #C2]) → core::String
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
+    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(v, s)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::String;
 }
 static method main() → dynamic {
   (core::int, [core::String]) → core::String m1 = new self::MA::•().{self::MA::m1}{(core::int, [core::String]) → core::String};
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
index 4066247..223afa8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.expect
@@ -10,13 +10,13 @@
     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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
index 4066247..223afa8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.strong.transformed.expect
@@ -10,13 +10,13 @@
     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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, 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 4066247..4ede1ab 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.modular.expect
index 4066247..4ede1ab 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.modular.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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
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 11a2304..860383b 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>{}))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic
   ;
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 4066247..4ede1ab 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))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
index a36b1b0..57f1942 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.expect
@@ -18,7 +18,7 @@
     ;
   method foo(core::int x) → void {}
   no-such-method-forwarder set foo(core::int x) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
@@ -26,6 +26,6 @@
 
 constants  {
   #C1 = #foo=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
index 193cafa..af721f8 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     ;
   method foo(core::int x) → void {}
   no-such-method-forwarder set foo(core::int x) → void
-    return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
@@ -26,6 +26,6 @@
 
 constants  {
   #C1 = #foo=
-  #C2 = <core::Type*>[]
-  #C3 = <core::Symbol*, dynamic>{}
+  #C2 = <core::Type>[]
+  #C3 = <core::Symbol, dynamic>{}
 }
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 a36b1b0..9608746 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.modular.expect
index a36b1b0..9608746 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.modular.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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect
index ea207e5..81eff9d 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>{}))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     ;
 }
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 193cafa..d623e66 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>(#C3))){(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>(#C3))){(core::Invocation) → dynamic};
   method noSuchMethod(core::Invocation i) → dynamic
     return null;
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
index 701ddc4..0ef2392 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
@@ -28,13 +28,13 @@
     : 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
index f76472c..ce3d9e4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
@@ -29,13 +29,13 @@
     : 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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {}
 
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
 }
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 701ddc4..83720cd 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
@@ -28,7 +28,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))){(core::Invocation) → 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.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.modular.expect
index 701ddc4..83720cd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.modular.expect
@@ -28,7 +28,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))){(core::Invocation) → 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.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
index f03309e..216a1d1 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
@@ -24,7 +24,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>{}))){(core::Invocation) → 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 f76472c..367527b 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
@@ -29,7 +29,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))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.expect
index b3f78ce..3a4fbe1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method /* signature-type: ([core::int]) → void */ method([core::int? a = #C1]) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class C extends core::Object implements self::B {
   synthetic constructor •() → self::C
@@ -27,7 +27,7 @@
 constants  {
   #C1 = null
   #C2 = #method
-  #C3 = <core::Type*>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C3 = <core::Type>[]
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = 0
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.transformed.expect
index de8b1d8..580ab86 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method /* signature-type: ([core::int]) → void */ method([core::int? a = #C1]) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(a)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(a)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class C extends core::Object implements self::B {
   synthetic constructor •() → self::C
@@ -27,7 +27,7 @@
 constants  {
   #C1 = null
   #C2 = #method
-  #C3 = <core::Type*>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C3 = <core::Type>[]
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = 0
 }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.expect
index b3f78ce..73cd827 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method /* signature-type: ([core::int]) → void */ method([core::int? a = #C1]) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class C extends core::Object implements self::B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.modular.expect b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.modular.expect
index b3f78ce..73cd827 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.modular.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method /* signature-type: ([core::int]) → void */ method([core::int? a = #C1]) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class C extends core::Object implements self::B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.outline.expect
index 3015ee0..51737af 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.outline.expect
@@ -13,7 +13,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     ;
   no-such-method-forwarder method /* signature-type: ([core::int]) → void */ method([core::int? a]) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#method, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class C extends core::Object implements self::B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.transformed.expect
index de8b1d8..a93f3aa 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subtype_override.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
   method noSuchMethod(core::Invocation _) → dynamic
     return null;
   no-such-method-forwarder method /* signature-type: ([core::int]) → void */ method([core::int? a = #C1]) → void
-    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(a)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
+    return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(a)), core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class C extends core::Object implements self::B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.strong.transformed.expect
index 307d29d..e2e52c2 100644
--- a/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.strong.transformed.expect
@@ -30,7 +30,7 @@
 [58]      [58] hoisted core::String? s;
 [74]      [74] hoisted core::int? i;
 [90]      [90] hoisted core::double? d;
-[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
+[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
 [36]        {
 [108]          [108] [108] core::print [113]([136] "hello X1(${[125] [125] s}, ${[129] [129] i}, ${[133] [133] d})");
 [-1]          break #L1;
@@ -41,7 +41,7 @@
 [165]      [165] hoisted core::String? s2;
 [182]      [182] hoisted core::int? i;
 [198]      [198] hoisted core::double? d;
-[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
+[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
 [143]        {
 [216]          [216] [216] core::print [221]([245] "hello X2(${[233] [233] s2}, ${[238] [238] i}, ${[242] [242] d})");
         }
diff --git a/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.weak.transformed.expect
index 307d29d..e2e52c2 100644
--- a/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/case_variables_name_overlap.dart.weak.transformed.expect
@@ -30,7 +30,7 @@
 [58]      [58] hoisted core::String? s;
 [74]      [74] hoisted core::int? i;
 [90]      [90] hoisted core::double? d;
-[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
+[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
 [36]        {
 [108]          [108] [108] core::print [113]([136] "hello X1(${[125] [125] s}, ${[129] [129] i}, ${[133] [133] d})");
 [-1]          break #L1;
@@ -41,7 +41,7 @@
 [165]      [165] hoisted core::String? s2;
 [182]      [182] hoisted core::int? i;
 [198]      [198] hoisted core::double? d;
-[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
+[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
 [143]        {
 [216]          [216] [216] core::print [221]([245] "hello X2(${[233] [233] s2}, ${[238] [238] i}, ${[242] [242] d})");
         }
diff --git a/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.strong.transformed.expect
index ad46491..b2922b4 100644
--- a/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.strong.transformed.expect
@@ -34,7 +34,7 @@
 [58]      [58] hoisted core::String? s;
 [74]      [74] hoisted core::int? i;
 [90]      [90] hoisted core::double? d;
-[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
+[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
 [36]        {
 [108]          [108] [108] core::print [113]([136] "hello X1(${[125] [125] s}, ${[129] [129] i}, ${[133] [133] d})");
 [-1]          break #L1;
@@ -45,7 +45,7 @@
 [165]      [165] hoisted core::String? s2;
 [182]      [182] hoisted core::int? i;
 [198]      [198] hoisted core::double? d;
-[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
+[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
 [143]        {
 [216]          [216] [216] core::print [221]([245] "hello X2(${[233] [233] s2}, ${[238] [238] i}, ${[242] [242] d})");
         }
diff --git a/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.weak.transformed.expect
index ad46491..b2922b4 100644
--- a/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/ddc/case_variables_name_overlap.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
 [58]      [58] hoisted core::String? s;
 [74]      [74] hoisted core::int? i;
 [90]      [90] hoisted core::double? d;
-[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
+[36]      if([41] [41] [41] [41] [41] [41] [41] [41] [-1] [-1] #0#0 is self::X1 && [58]([58] let [58] final core::String? #t1 = [58] [58] s = [53] [53] [-1] [-1] #0#0{self::X1}.{self::X1::s}{core::String?} in [-1] [-1] true) && [74]([74] let [74] final core::int? #t2 = [74] [74] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t3 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [69] [69] [-1] [-1] #0#0{self::X1}.{self::X1::i}{core::int?} in [-1] [-1] true) && [90]([90] let [90] final core::double? #t4 = [90] [90] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t5 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [85] [85] [-1] [-1] #0#0{self::X1}.{self::X1::d}{core::double?} in [-1] [-1] true)) {
 [36]        {
 [108]          [108] [108] core::print [113]([136] "hello X1(${[125] [125] s}, ${[129] [129] i}, ${[133] [133] d})");
 [-1]          break #L1;
@@ -45,7 +45,7 @@
 [165]      [165] hoisted core::String? s2;
 [182]      [182] hoisted core::int? i;
 [198]      [198] hoisted core::double? d;
-[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool* #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool* #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
+[143]      if([148] [148] [148] [148] [148] [148] [148] [148] [-1] [-1] #0#0 is self::X2 && [165]([165] let [165] final core::String? #t6 = [165] [165] s2 = [160] [160] [-1] [-1] #0#0{self::X2}.{self::X2::s2}{core::String?} in [-1] [-1] true) && [182]([182] let [182] final core::int? #t7 = [182] [182] i = [69] [69] [-1] [-1] #0#3#isSet ?{core::int?} [-1] [-1] #0#3{core::int?} : [69] [69] let [69] final core::bool #t8 = [69] [69] #0#3#isSet = [69] [69] true in [69] [69] #0#3 = [177] [177] [-1] [-1] #0#0{self::X2}.{self::X2::i}{core::int?} in [-1] [-1] true) && [198]([198] let [198] final core::double? #t9 = [198] [198] d = [85] [85] [-1] [-1] #0#4#isSet ?{core::double?} [-1] [-1] #0#4{core::double?} : [85] [85] let [85] final core::bool #t10 = [85] [85] #0#4#isSet = [85] [85] true in [85] [85] #0#4 = [193] [193] [-1] [-1] #0#0{self::X2}.{self::X2::d}{core::double?} in [-1] [-1] true)) {
 [143]        {
 [216]          [216] [216] core::print [221]([245] "hello X2(${[233] [233] s2}, ${[238] [238] i}, ${[242] [242] d})");
         }
diff --git a/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.strong.transformed.expect
index 74b3c2a..7078b73 100644
--- a/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
+[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
 [258]        [258] dynamic a = [-1] [-1] #t1{dynamic};
 [248]        {
 [311]          [311] [311] core::print [316]([317] a);
diff --git a/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.weak.transformed.expect
index 74b3c2a..7078b73 100644
--- a/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/ddc/pattern_switch.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
+[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
 [258]        [258] dynamic a = [-1] [-1] #t1{dynamic};
 [248]        {
 [311]          [311] [311] core::print [316]([317] a);
diff --git a/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.strong.transformed.expect
index 6df950f..343e843 100644
--- a/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
+[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
 [248]        {
 [311]          [311] [311] core::print [316]([317] "1");
 [-1]          break #L1;
@@ -30,7 +30,7 @@
 [327]    {
 [337]      [337] lowered hoisted dynamic b#case#0;
 [369]      [369] lowered hoisted dynamic b#case#1;
-[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
+[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
 [337]        [337] dynamic b = [-1] [-1] #t1{dynamic};
 [327]        {
 [390]          [390] [390] core::print [395]([396] b);
diff --git a/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.weak.transformed.expect
index 6df950f..343e843 100644
--- a/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/ddc/shared_case_variables.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
+[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
 [248]        {
 [311]          [311] [311] core::print [316]([317] "1");
 [-1]          break #L1;
@@ -30,7 +30,7 @@
 [327]    {
 [337]      [337] lowered hoisted dynamic b#case#0;
 [369]      [369] lowered hoisted dynamic b#case#1;
-[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
+[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
 [337]        [337] dynamic b = [-1] [-1] #t1{dynamic};
 [327]        {
 [390]          [390] [390] core::print [395]([396] b);
diff --git a/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.strong.transformed.expect
index 74b3c2a..7078b73 100644
--- a/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
+[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
 [258]        [258] dynamic a = [-1] [-1] #t1{dynamic};
 [248]        {
 [311]          [311] [311] core::print [316]([317] a);
diff --git a/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.weak.transformed.expect
index 74b3c2a..7078b73 100644
--- a/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/forced_all_late_lowering/pattern_switch.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
+[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
 [258]        [258] dynamic a = [-1] [-1] #t1{dynamic};
 [248]        {
 [311]          [311] [311] core::print [316]([317] a);
diff --git a/pkg/front_end/testcases/offsets/pattern_switch.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/pattern_switch.dart.strong.transformed.expect
index 74b3c2a..7078b73 100644
--- a/pkg/front_end/testcases/offsets/pattern_switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/pattern_switch.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
+[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
 [258]        [258] dynamic a = [-1] [-1] #t1{dynamic};
 [248]        {
 [311]          [311] [311] core::print [316]([317] a);
diff --git a/pkg/front_end/testcases/offsets/pattern_switch.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/pattern_switch.dart.weak.transformed.expect
index 74b3c2a..7078b73 100644
--- a/pkg/front_end/testcases/offsets/pattern_switch.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/pattern_switch.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
+[248]      if([231] [231] [258] [258] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1 && [258]([258] let [258] final dynamic #t3 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.> [268]([270] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t4 = [231] [231] #t1 = [258] [258] a#case#0 in [258] [258] true) || [290] [290] [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2 && [290]([290] let [290] final dynamic #t6 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.< [300]([302] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t7 = [231] [231] #t1 = [290] [290] a#case#1 in [290] [290] true)) {
 [258]        [258] dynamic a = [-1] [-1] #t1{dynamic};
 [248]        {
 [311]          [311] [311] core::print [316]([317] a);
diff --git a/pkg/front_end/testcases/offsets/shared_case_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/shared_case_variables.dart.strong.transformed.expect
index 6df950f..343e843 100644
--- a/pkg/front_end/testcases/offsets/shared_case_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/shared_case_variables.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
+[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
 [248]        {
 [311]          [311] [311] core::print [316]([317] "1");
 [-1]          break #L1;
@@ -30,7 +30,7 @@
 [327]    {
 [337]      [337] lowered hoisted dynamic b#case#0;
 [369]      [369] lowered hoisted dynamic b#case#1;
-[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
+[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
 [337]        [337] dynamic b = [-1] [-1] #t1{dynamic};
 [327]        {
 [390]          [390] [390] core::print [395]([396] b);
diff --git a/pkg/front_end/testcases/offsets/shared_case_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/shared_case_variables.dart.weak.transformed.expect
index 6df950f..343e843 100644
--- a/pkg/front_end/testcases/offsets/shared_case_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/shared_case_variables.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
 [248]    {
 [258]      [258] lowered hoisted dynamic a#case#0;
 [290]      [290] lowered hoisted dynamic a#case#1;
-[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
+[248]      if([231] [231] [-1] [-1] [253] [253] [253] [253] [253] [253] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t2 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t3 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [258]([258] let [258] final dynamic #t4 = [258] [258] a#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t5 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [268] [268] [268] [268] [266] [266] a#case#0{dynamic}.< [268]([270] 5) as{TypeError} core::bool || [-1] [-1] [282] [282] [282] [282] [282] [282] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t6 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t7 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [290]([290] let [290] final dynamic #t8 = [290] [290] a#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t9 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [300] [300] [300] [300] [298] [298] a#case#1{dynamic}.> [300]([302] 5) as{TypeError} core::bool) {
 [248]        {
 [311]          [311] [311] core::print [316]([317] "1");
 [-1]          break #L1;
@@ -30,7 +30,7 @@
 [327]    {
 [337]      [337] lowered hoisted dynamic b#case#0;
 [369]      [369] lowered hoisted dynamic b#case#1;
-[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool* #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool* #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool* #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool* #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool* #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
+[327]      if([231] [231] [337] [337] [-1] [-1] [332] [332] [332] [332] [332] [332] [-1] [-1] #0#0 is core::List<dynamic> && [253]([253] [-1] [-1] #0#4#isSet ?{core::bool} [-1] [-1] #0#4{core::bool} : [253] [253] let [253] final core::bool #t10 = [253] [253] #0#4#isSet = [253] [253] true in [253] [253] #0#4 = [253] [253] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t11 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C1) && [337]([337] let [337] final dynamic #t12 = [337] [337] b#case#0 = [253] [253] [-1] [-1] #0#6#isSet ?{dynamic} [-1] [-1] #0#6{dynamic} : [253] [253] let [253] final core::bool #t13 = [253] [253] #0#6#isSet = [253] [253] true in [253] [253] #0#6 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[253]([253] 0){(core::int) → dynamic} in [-1] [-1] true) && [347] [347] [347] [347] [345] [345] b#case#0{dynamic}.< [347]([349] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t14 = [231] [231] #t1 = [337] [337] b#case#0 in [337] [337] true) || [369] [369] [-1] [-1] [361] [361] [361] [361] [361] [361] [-1] [-1] #0#0 is core::List<dynamic> && [282]([282] [-1] [-1] #0#8#isSet ?{core::bool} [-1] [-1] #0#8{core::bool} : [282] [282] let [282] final core::bool #t15 = [282] [282] #0#8#isSet = [282] [282] true in [282] [282] #0#8 = [282] [282] [253]([253] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [253] [253] let [253] final core::bool #t16 = [253] [253] #0#2#isSet = [253] [253] true in [253] [253] #0#2 = [253] [253] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C2) && [369]([369] let [369] final dynamic #t17 = [369] [369] b#case#1 = [282] [282] [-1] [-1] #0#10#isSet ?{dynamic} [-1] [-1] #0#10{dynamic} : [282] [282] let [282] final core::bool #t18 = [282] [282] #0#10#isSet = [282] [282] true in [282] [282] #0#10 = [282] [282] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[282]([282] 1){(core::int) → dynamic} in [-1] [-1] true) && [379] [379] [379] [379] [377] [377] b#case#1{dynamic}.> [379]([381] 5) as{TypeError} core::bool && [231]([231] let [231] final dynamic #t19 = [231] [231] #t1 = [369] [369] b#case#1 in [369] [369] true)) {
 [337]        [337] dynamic b = [-1] [-1] #t1{dynamic};
 [327]        {
 [390]          [390] [390] core::print [395]([396] b);
diff --git a/pkg/front_end/testcases/offsets/step_through_patterns.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/step_through_patterns.dart.strong.transformed.expect
index 839a41b..cae2d68 100644
--- a/pkg/front_end/testcases/offsets/step_through_patterns.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/step_through_patterns.dart.strong.transformed.expect
@@ -33,28 +33,28 @@
 [470]    {
 [527]      {
 [512]        [512] hoisted core::double l;
-[527]        if([-1] [-1] [493] [493] [493] [493] [-1] [-1] #0#0 is self::Square && [512]([512] let [512] final core::double #t2 = [512] [512] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool* #t3 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [522] [522] [520] [520] l.{core::num::>=}[522]([525] 0){(core::num) → core::bool}) {
+[527]        if([-1] [-1] [493] [493] [493] [493] [-1] [-1] #0#0 is self::Square && [512]([512] let [512] final core::double #t2 = [512] [512] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool #t3 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [522] [522] [520] [520] l.{core::num::>=}[522]([525] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [532] [532] [530] [530] l.{core::double::*}[532]([534] l){(core::num) → core::double};
 [527]          break #L1;
         }
       }
 [577]      {
 [562]        [562] hoisted core::double r;
-[577]        if([-1] [-1] [543] [543] [543] [543] [-1] [-1] #0#0 is self::Circle && [562]([562] let [562] final core::double #t4 = [562] [562] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool* #t5 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [572] [572] [570] [570] r.{core::num::>=}[572]([575] 0){(core::num) → core::bool}) {
+[577]        if([-1] [-1] [543] [543] [543] [543] [-1] [-1] #0#0 is self::Circle && [562]([562] let [562] final core::double #t4 = [562] [562] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool #t5 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [572] [572] [570] [570] r.{core::num::>=}[572]([575] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [587] [587] [583] [583] [580] [580] #C1.{core::double::*}[583]([585] r){(core::num) → core::double}.{core::double::*}[587]([589] r){(core::num) → core::double};
 [577]          break #L1;
         }
       }
 [631]      {
 [617]        [617] hoisted core::double l;
-[631]        if([-1] [-1] [598] [598] [598] [598] [-1] [-1] #0#0 is self::Square && [617]([617] let [617] final core::double #t6 = [617] [617] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool* #t7 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [627] [627] [625] [625] l.{core::num::<}[627]([629] 0){(core::num) → core::bool}) {
+[631]        if([-1] [-1] [598] [598] [598] [598] [-1] [-1] #0#0 is self::Square && [617]([617] let [617] final core::double #t6 = [617] [617] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool #t7 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [627] [627] [625] [625] l.{core::num::<}[627]([629] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [634] [634] -1.0;
 [631]          break #L1;
         }
       }
 [677]      {
 [663]        [663] hoisted core::double r;
-[677]        if([-1] [-1] [644] [644] [644] [644] [-1] [-1] #0#0 is self::Circle && [663]([663] let [663] final core::double #t8 = [663] [663] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool* #t9 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [673] [673] [671] [671] r.{core::num::<}[673]([675] 0){(core::num) → core::bool}) {
+[677]        if([-1] [-1] [644] [644] [644] [644] [-1] [-1] #0#0 is self::Circle && [663]([663] let [663] final core::double #t8 = [663] [663] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool #t9 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [673] [673] [671] [671] r.{core::num::<}[673]([675] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [680] [680] -1.0;
 [677]          break #L1;
         }
diff --git a/pkg/front_end/testcases/offsets/step_through_patterns.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/step_through_patterns.dart.weak.transformed.expect
index 7f1feaf..affc94e 100644
--- a/pkg/front_end/testcases/offsets/step_through_patterns.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/step_through_patterns.dart.weak.transformed.expect
@@ -34,28 +34,28 @@
 [470]    {
 [527]      {
 [512]        [512] hoisted core::double l;
-[527]        if([-1] [-1] [493] [493] [493] [493] [-1] [-1] #0#0 is self::Square && [512]([512] let [512] final core::double #t2 = [512] [512] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool* #t3 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [522] [522] [520] [520] l.{core::num::>=}[522]([525] 0){(core::num) → core::bool}) {
+[527]        if([-1] [-1] [493] [493] [493] [493] [-1] [-1] #0#0 is self::Square && [512]([512] let [512] final core::double #t2 = [512] [512] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool #t3 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [522] [522] [520] [520] l.{core::num::>=}[522]([525] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [532] [532] [530] [530] l.{core::double::*}[532]([534] l){(core::num) → core::double};
 [527]          break #L1;
         }
       }
 [577]      {
 [562]        [562] hoisted core::double r;
-[577]        if([-1] [-1] [543] [543] [543] [543] [-1] [-1] #0#0 is self::Circle && [562]([562] let [562] final core::double #t4 = [562] [562] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool* #t5 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [572] [572] [570] [570] r.{core::num::>=}[572]([575] 0){(core::num) → core::bool}) {
+[577]        if([-1] [-1] [543] [543] [543] [543] [-1] [-1] #0#0 is self::Circle && [562]([562] let [562] final core::double #t4 = [562] [562] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool #t5 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [572] [572] [570] [570] r.{core::num::>=}[572]([575] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [587] [587] [583] [583] [580] [580] #C1.{core::double::*}[583]([585] r){(core::num) → core::double}.{core::double::*}[587]([589] r){(core::num) → core::double};
 [577]          break #L1;
         }
       }
 [631]      {
 [617]        [617] hoisted core::double l;
-[631]        if([-1] [-1] [598] [598] [598] [598] [-1] [-1] #0#0 is self::Square && [617]([617] let [617] final core::double #t6 = [617] [617] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool* #t7 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [627] [627] [625] [625] l.{core::num::<}[627]([629] 0){(core::num) → core::bool}) {
+[631]        if([-1] [-1] [598] [598] [598] [598] [-1] [-1] #0#0 is self::Square && [617]([617] let [617] final core::double #t6 = [617] [617] l = [506] [506] [-1] [-1] #0#2#isSet ?{core::double} [-1] [-1] #0#2{core::double} : [506] [506] let [506] final core::bool #t7 = [506] [506] #0#2#isSet = [506] [506] true in [506] [506] #0#2 = [506] [506] [-1] [-1] #0#0{self::Square}.{self::Square::length}{core::double} in [-1] [-1] true) && [627] [627] [625] [625] l.{core::num::<}[627]([629] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [634] [634] -1.0;
 [631]          break #L1;
         }
       }
 [677]      {
 [663]        [663] hoisted core::double r;
-[677]        if([-1] [-1] [644] [644] [644] [644] [-1] [-1] #0#0 is self::Circle && [663]([663] let [663] final core::double #t8 = [663] [663] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool* #t9 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [673] [673] [671] [671] r.{core::num::<}[673]([675] 0){(core::num) → core::bool}) {
+[677]        if([-1] [-1] [644] [644] [644] [644] [-1] [-1] #0#0 is self::Circle && [663]([663] let [663] final core::double #t8 = [663] [663] r = [556] [556] [-1] [-1] #0#4#isSet ?{core::double} [-1] [-1] #0#4{core::double} : [556] [556] let [556] final core::bool #t9 = [556] [556] #0#4#isSet = [556] [556] true in [556] [556] #0#4 = [556] [556] [-1] [-1] #0#0{self::Circle}.{self::Circle::radius}{core::double} in [-1] [-1] true) && [673] [673] [671] [671] r.{core::num::<}[673]([675] 0){(core::num) → core::bool}) {
 [-1]          [-1] [-1] #t1 = [680] [680] -1.0;
 [677]          break #L1;
         }
diff --git a/pkg/front_end/testcases/offsets/switch_encoding.dart.strong.transformed.expect b/pkg/front_end/testcases/offsets/switch_encoding.dart.strong.transformed.expect
index d1ce0ce..cf5a1f5 100644
--- a/pkg/front_end/testcases/offsets/switch_encoding.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/offsets/switch_encoding.dart.strong.transformed.expect
@@ -44,7 +44,7 @@
 [639]    {
 [649]      [649] lowered hoisted dynamic a#case#0;
 [681]      [681] lowered hoisted dynamic a#case#1;
-[639]      if([622] [622] [649] [649] [-1] [-1] [644] [644] [644] [644] [644] [644] [-1] [-1] #0#0 is core::List<dynamic> && [644] [644] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool* #t2 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [649]([649] let [649] final dynamic #t3 = [649] [649] a#case#0 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[644]([644] 0){(core::int) → dynamic} in [-1] [-1] true) && [659] [659] [659] [659] [657] [657] a#case#0{dynamic}.> [659]([661] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t4 = [622] [622] #t1 = [649] [649] a#case#0 in [649] [649] true) || [681] [681] [-1] [-1] [673] [673] [673] [673] [673] [673] [-1] [-1] #0#0 is core::List<dynamic> && [673] [673] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool* #t5 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [681]([681] let [681] final dynamic #t6 = [681] [681] a#case#1 = [673] [673] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[673]([673] 1){(core::int) → dynamic} in [-1] [-1] true) && [691] [691] [691] [691] [689] [689] a#case#1{dynamic}.< [691]([693] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t7 = [622] [622] #t1 = [681] [681] a#case#1 in [681] [681] true)) {
+[639]      if([622] [622] [649] [649] [-1] [-1] [644] [644] [644] [644] [644] [644] [-1] [-1] #0#0 is core::List<dynamic> && [644] [644] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool #t2 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [649]([649] let [649] final dynamic #t3 = [649] [649] a#case#0 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[644]([644] 0){(core::int) → dynamic} in [-1] [-1] true) && [659] [659] [659] [659] [657] [657] a#case#0{dynamic}.> [659]([661] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t4 = [622] [622] #t1 = [649] [649] a#case#0 in [649] [649] true) || [681] [681] [-1] [-1] [673] [673] [673] [673] [673] [673] [-1] [-1] #0#0 is core::List<dynamic> && [673] [673] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool #t5 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [681]([681] let [681] final dynamic #t6 = [681] [681] a#case#1 = [673] [673] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[673]([673] 1){(core::int) → dynamic} in [-1] [-1] true) && [691] [691] [691] [691] [689] [689] a#case#1{dynamic}.< [691]([693] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t7 = [622] [622] #t1 = [681] [681] a#case#1 in [681] [681] true)) {
 [649]        [649] dynamic a = [-1] [-1] #t1{dynamic};
 [639]        {
 [702]          [702] [702] core::print [707]([708] a);
@@ -54,7 +54,7 @@
     }
 [716]    {
 [729]      [729] hoisted dynamic a;
-[716]      if([721] [721] [723] [723] [721] [721] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [723]([723] [723] [723]![723]([723] [723]([723] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [723] [723] let [723] final core::bool* #t8 = [723] [723] #0#13#isSet = [723] [723] true in [723] [723] #0#13 = [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[723]([-1] #C4){(core::Object?) → dynamic}) == null) || [723] [723] [723] [723] [723] [723] null is dynamic && [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[723]([-1] #C4){(core::Object?) → core::bool}) && [729]([729] let [729] final dynamic #t9 = [729] [729] a = [723] [723] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [723] [723] let [723] final core::bool* #t10 = [723] [723] #0#13#isSet = [723] [723] true in [723] [723] #0#13 = [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[723]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
+[716]      if([721] [721] [723] [723] [721] [721] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [723]([723] [723] [723]![723]([723] [723]([723] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [723] [723] let [723] final core::bool #t8 = [723] [723] #0#13#isSet = [723] [723] true in [723] [723] #0#13 = [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[723]([-1] #C4){(core::Object?) → dynamic}) == null) || [723] [723] [723] [723] [723] [723] null is dynamic && [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[723]([-1] #C4){(core::Object?) → core::bool}) && [729]([729] let [729] final dynamic #t9 = [729] [729] a = [723] [723] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [723] [723] let [723] final core::bool #t10 = [723] [723] #0#13#isSet = [723] [723] true in [723] [723] #0#13 = [723] [723] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[723]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
 [716]        {
 [739]          [739] [739] core::print [744]([745] a);
         }
@@ -74,7 +74,7 @@
 [805]    {
 [815]      [815] lowered hoisted dynamic a#case#0;
 [847]      [847] lowered hoisted dynamic a#case#1;
-[805]      if([788] [788] [815] [815] [-1] [-1] [810] [810] [810] [810] [810] [810] [-1] [-1] #0#0 is core::List<dynamic> && [810] [810] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool* #t12 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [815]([815] let [815] final dynamic #t13 = [815] [815] a#case#0 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[810]([810] 0){(core::int) → dynamic} in [-1] [-1] true) && [825] [825] [825] [825] [823] [823] a#case#0{dynamic}.> [825]([827] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t14 = [788] [788] #t11 = [815] [815] a#case#0 in [815] [815] true) || [847] [847] [-1] [-1] [839] [839] [839] [839] [839] [839] [-1] [-1] #0#0 is core::List<dynamic> && [839] [839] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool* #t15 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [847]([847] let [847] final dynamic #t16 = [847] [847] a#case#1 = [839] [839] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[839]([839] 1){(core::int) → dynamic} in [-1] [-1] true) && [857] [857] [857] [857] [855] [855] a#case#1{dynamic}.< [857]([859] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t17 = [788] [788] #t11 = [847] [847] a#case#1 in [847] [847] true)) {
+[805]      if([788] [788] [815] [815] [-1] [-1] [810] [810] [810] [810] [810] [810] [-1] [-1] #0#0 is core::List<dynamic> && [810] [810] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool #t12 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [815]([815] let [815] final dynamic #t13 = [815] [815] a#case#0 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[810]([810] 0){(core::int) → dynamic} in [-1] [-1] true) && [825] [825] [825] [825] [823] [823] a#case#0{dynamic}.> [825]([827] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t14 = [788] [788] #t11 = [815] [815] a#case#0 in [815] [815] true) || [847] [847] [-1] [-1] [839] [839] [839] [839] [839] [839] [-1] [-1] #0#0 is core::List<dynamic> && [839] [839] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool #t15 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [847]([847] let [847] final dynamic #t16 = [847] [847] a#case#1 = [839] [839] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[839]([839] 1){(core::int) → dynamic} in [-1] [-1] true) && [857] [857] [857] [857] [855] [855] a#case#1{dynamic}.< [857]([859] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t17 = [788] [788] #t11 = [847] [847] a#case#1 in [847] [847] true)) {
 [815]        [815] dynamic a = [-1] [-1] #t11{dynamic};
 [805]        {
 [868]          [868] [868] core::print [873]([874] a);
@@ -84,7 +84,7 @@
     }
 [882]    {
 [895]      [895] hoisted dynamic a;
-[882]      if([887] [887] [889] [889] [887] [887] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [889]([889] [889] [889]![889]([889] [889]([889] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [889] [889] let [889] final core::bool* #t18 = [889] [889] #0#13#isSet = [889] [889] true in [889] [889] #0#13 = [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[889]([-1] #C4){(core::Object?) → dynamic}) == null) || [889] [889] [889] [889] [889] [889] null is dynamic && [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[889]([-1] #C4){(core::Object?) → core::bool}) && [895]([895] let [895] final dynamic #t19 = [895] [895] a = [889] [889] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [889] [889] let [889] final core::bool* #t20 = [889] [889] #0#13#isSet = [889] [889] true in [889] [889] #0#13 = [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[889]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
+[882]      if([887] [887] [889] [889] [887] [887] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [889]([889] [889] [889]![889]([889] [889]([889] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [889] [889] let [889] final core::bool #t18 = [889] [889] #0#13#isSet = [889] [889] true in [889] [889] #0#13 = [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[889]([-1] #C4){(core::Object?) → dynamic}) == null) || [889] [889] [889] [889] [889] [889] null is dynamic && [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[889]([-1] #C4){(core::Object?) → core::bool}) && [895]([895] let [895] final dynamic #t19 = [895] [895] a = [889] [889] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [889] [889] let [889] final core::bool #t20 = [889] [889] #0#13#isSet = [889] [889] true in [889] [889] #0#13 = [889] [889] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[889]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
 [882]        {
 [905]          [905] [905] core::print [910]([911] a);
 [-1]          break #L2;
@@ -115,7 +115,7 @@
 [1013]      {
 [1023]        [1023] lowered hoisted dynamic a#case#0;
 [1055]        [1055] lowered hoisted dynamic a#case#1;
-[1013]        if([996] [996] [1023] [1023] [-1] [-1] [1018] [1018] [1018] [1018] [1018] [1018] [-1] [-1] #0#0 is core::List<dynamic> && [1018] [1018] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool* #t23 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1023]([1023] let [1023] final dynamic #t24 = [1023] [1023] a#case#0 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1018]([1018] 0){(core::int) → dynamic} in [-1] [-1] true) && [1033] [1033] [1033] [1033] [1031] [1031] a#case#0{dynamic}.> [1033]([1035] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t25 = [996] [996] #t22 = [1023] [1023] a#case#0 in [1023] [1023] true) || [1055] [1055] [-1] [-1] [1047] [1047] [1047] [1047] [1047] [1047] [-1] [-1] #0#0 is core::List<dynamic> && [1047] [1047] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool* #t26 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1055]([1055] let [1055] final dynamic #t27 = [1055] [1055] a#case#1 = [1047] [1047] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1047]([1047] 1){(core::int) → dynamic} in [-1] [-1] true) && [1065] [1065] [1065] [1065] [1063] [1063] a#case#1{dynamic}.< [1065]([1067] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t28 = [996] [996] #t22 = [1055] [1055] a#case#1 in [1055] [1055] true)) {
+[1013]        if([996] [996] [1023] [1023] [-1] [-1] [1018] [1018] [1018] [1018] [1018] [1018] [-1] [-1] #0#0 is core::List<dynamic> && [1018] [1018] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool #t23 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1023]([1023] let [1023] final dynamic #t24 = [1023] [1023] a#case#0 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1018]([1018] 0){(core::int) → dynamic} in [-1] [-1] true) && [1033] [1033] [1033] [1033] [1031] [1031] a#case#0{dynamic}.> [1033]([1035] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t25 = [996] [996] #t22 = [1023] [1023] a#case#0 in [1023] [1023] true) || [1055] [1055] [-1] [-1] [1047] [1047] [1047] [1047] [1047] [1047] [-1] [-1] #0#0 is core::List<dynamic> && [1047] [1047] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool #t26 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1055]([1055] let [1055] final dynamic #t27 = [1055] [1055] a#case#1 = [1047] [1047] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1047]([1047] 1){(core::int) → dynamic} in [-1] [-1] true) && [1065] [1065] [1065] [1065] [1063] [1063] a#case#1{dynamic}.< [1065]([1067] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t28 = [996] [996] #t22 = [1055] [1055] a#case#1 in [1055] [1055] true)) {
 [1023]          [1023] dynamic a = [-1] [-1] #t22{dynamic};
 [1013]          {
 [1076]            [1076] [1076] core::print [1081]([1082] a);
@@ -125,7 +125,7 @@
       }
 [1090]      {
 [1103]        [1103] hoisted dynamic a;
-[1090]        if([1095] [1095] [1097] [1097] [1095] [1095] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [1097]([1097] [1097] [1097]![1097]([1097] [1097]([1097] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1097] [1097] let [1097] final core::bool* #t29 = [1097] [1097] #0#13#isSet = [1097] [1097] true in [1097] [1097] #0#13 = [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1097]([-1] #C4){(core::Object?) → dynamic}) == null) || [1097] [1097] [1097] [1097] [1097] [1097] null is dynamic && [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1097]([-1] #C4){(core::Object?) → core::bool}) && [1103]([1103] let [1103] final dynamic #t30 = [1103] [1103] a = [1097] [1097] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1097] [1097] let [1097] final core::bool* #t31 = [1097] [1097] #0#13#isSet = [1097] [1097] true in [1097] [1097] #0#13 = [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1097]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
+[1090]        if([1095] [1095] [1097] [1097] [1095] [1095] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [1097]([1097] [1097] [1097]![1097]([1097] [1097]([1097] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1097] [1097] let [1097] final core::bool #t29 = [1097] [1097] #0#13#isSet = [1097] [1097] true in [1097] [1097] #0#13 = [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1097]([-1] #C4){(core::Object?) → dynamic}) == null) || [1097] [1097] [1097] [1097] [1097] [1097] null is dynamic && [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1097]([-1] #C4){(core::Object?) → core::bool}) && [1103]([1103] let [1103] final dynamic #t30 = [1103] [1103] a = [1097] [1097] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1097] [1097] let [1097] final core::bool #t31 = [1097] [1097] #0#13#isSet = [1097] [1097] true in [1097] [1097] #0#13 = [1097] [1097] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1097]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
 [1090]          {
 [1113]            [1113] [1113] core::print [1118]([1119] a);
 [1129]            [1129] [1129] #t21 = [1129] [1129] 0;
@@ -193,7 +193,7 @@
       }
 [1382]      {
 [1395]        [1395] hoisted dynamic a;
-[1382]        if([1387] [1387] [1389] [1389] [1387] [1387] [-1] [-1] #2#0 is core::Map<dynamic, dynamic> && [1389]([1389] [1389] [1389]![1389]([1389] [1389]([1389] [-1] [-1] #2#9#isSet ?{dynamic} [-1] [-1] #2#9{dynamic} : [1389] [1389] let [1389] final core::bool* #t34 = [1389] [1389] #2#9#isSet = [1389] [1389] true in [1389] [1389] #2#9 = [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1389]([-1] #C4){(core::Object?) → dynamic}) == null) || [1389] [1389] [1389] [1389] [1389] [1389] null is dynamic && [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1389]([-1] #C4){(core::Object?) → core::bool}) && [1395]([1395] let [1395] final dynamic #t35 = [1395] [1395] a = [1389] [1389] [-1] [-1] #2#9#isSet ?{dynamic} [-1] [-1] #2#9{dynamic} : [1389] [1389] let [1389] final core::bool* #t36 = [1389] [1389] #2#9#isSet = [1389] [1389] true in [1389] [1389] #2#9 = [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1389]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
+[1382]        if([1387] [1387] [1389] [1389] [1387] [1387] [-1] [-1] #2#0 is core::Map<dynamic, dynamic> && [1389]([1389] [1389] [1389]![1389]([1389] [1389]([1389] [-1] [-1] #2#9#isSet ?{dynamic} [-1] [-1] #2#9{dynamic} : [1389] [1389] let [1389] final core::bool #t34 = [1389] [1389] #2#9#isSet = [1389] [1389] true in [1389] [1389] #2#9 = [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1389]([-1] #C4){(core::Object?) → dynamic}) == null) || [1389] [1389] [1389] [1389] [1389] [1389] null is dynamic && [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1389]([-1] #C4){(core::Object?) → core::bool}) && [1395]([1395] let [1395] final dynamic #t35 = [1395] [1395] a = [1389] [1389] [-1] [-1] #2#9#isSet ?{dynamic} [-1] [-1] #2#9{dynamic} : [1389] [1389] let [1389] final core::bool #t36 = [1389] [1389] #2#9#isSet = [1389] [1389] true in [1389] [1389] #2#9 = [1389] [1389] [-1] [-1] #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1389]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
 [1382]          {
 [1405]            [1405] [1405] core::print [1410]([1411] a);
 [1421]            #L9:
@@ -210,7 +210,7 @@
 [1443]                {
 [1453]                  [1453] lowered hoisted dynamic a#case#0;
 [1489]                  [1489] lowered hoisted dynamic a#case#1;
-[1443]                  if([1421] [1421] [1453] [1453] [-1] [-1] [1448] [1448] [1448] [1448] [1448] [1448] [-1] [-1] #0#0 is core::List<dynamic> && [1448] [1448] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool* #t39 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1453]([1453] let [1453] final dynamic #t40 = [1453] [1453] a#case#0 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1448]([1448] 0){(core::int) → dynamic} in [-1] [-1] true) && [1463] [1463] [1463] [1463] [1461] [1461] a#case#0{dynamic}.> [1463]([1465] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t41 = [1421] [1421] #t38 = [1453] [1453] a#case#0 in [1453] [1453] true) || [1489] [1489] [-1] [-1] [1481] [1481] [1481] [1481] [1481] [1481] [-1] [-1] #0#0 is core::List<dynamic> && [1481] [1481] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool* #t42 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1489]([1489] let [1489] final dynamic #t43 = [1489] [1489] a#case#1 = [1481] [1481] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1481]([1481] 1){(core::int) → dynamic} in [-1] [-1] true) && [1499] [1499] [1499] [1499] [1497] [1497] a#case#1{dynamic}.< [1499]([1501] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t44 = [1421] [1421] #t38 = [1489] [1489] a#case#1 in [1489] [1489] true)) {
+[1443]                  if([1421] [1421] [1453] [1453] [-1] [-1] [1448] [1448] [1448] [1448] [1448] [1448] [-1] [-1] #0#0 is core::List<dynamic> && [1448] [1448] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool #t39 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1453]([1453] let [1453] final dynamic #t40 = [1453] [1453] a#case#0 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1448]([1448] 0){(core::int) → dynamic} in [-1] [-1] true) && [1463] [1463] [1463] [1463] [1461] [1461] a#case#0{dynamic}.> [1463]([1465] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t41 = [1421] [1421] #t38 = [1453] [1453] a#case#0 in [1453] [1453] true) || [1489] [1489] [-1] [-1] [1481] [1481] [1481] [1481] [1481] [1481] [-1] [-1] #0#0 is core::List<dynamic> && [1481] [1481] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool #t42 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1489]([1489] let [1489] final dynamic #t43 = [1489] [1489] a#case#1 = [1481] [1481] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1481]([1481] 1){(core::int) → dynamic} in [-1] [-1] true) && [1499] [1499] [1499] [1499] [1497] [1497] a#case#1{dynamic}.< [1499]([1501] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t44 = [1421] [1421] #t38 = [1489] [1489] a#case#1 in [1489] [1489] true)) {
 [1453]                    [1453] dynamic a = [-1] [-1] #t38{dynamic};
 [1443]                    {
 [1514]                      [1514] [1514] core::print [1519]([1520] a);
@@ -220,7 +220,7 @@
                 }
 [1532]                {
 [1545]                  [1545] hoisted dynamic a;
-[1532]                  if([1537] [1537] [1539] [1539] [1537] [1537] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [1539]([1539] [1539] [1539]![1539]([1539] [1539]([1539] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1539] [1539] let [1539] final core::bool* #t45 = [1539] [1539] #0#13#isSet = [1539] [1539] true in [1539] [1539] #0#13 = [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1539]([-1] #C4){(core::Object?) → dynamic}) == null) || [1539] [1539] [1539] [1539] [1539] [1539] null is dynamic && [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1539]([-1] #C4){(core::Object?) → core::bool}) && [1545]([1545] let [1545] final dynamic #t46 = [1545] [1545] a = [1539] [1539] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1539] [1539] let [1539] final core::bool* #t47 = [1539] [1539] #0#13#isSet = [1539] [1539] true in [1539] [1539] #0#13 = [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1539]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
+[1532]                  if([1537] [1537] [1539] [1539] [1537] [1537] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [1539]([1539] [1539] [1539]![1539]([1539] [1539]([1539] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1539] [1539] let [1539] final core::bool #t45 = [1539] [1539] #0#13#isSet = [1539] [1539] true in [1539] [1539] #0#13 = [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1539]([-1] #C4){(core::Object?) → dynamic}) == null) || [1539] [1539] [1539] [1539] [1539] [1539] null is dynamic && [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[1539]([-1] #C4){(core::Object?) → core::bool}) && [1545]([1545] let [1545] final dynamic #t46 = [1545] [1545] a = [1539] [1539] [-1] [-1] #0#13#isSet ?{dynamic} [-1] [-1] #0#13{dynamic} : [1539] [1539] let [1539] final core::bool #t47 = [1539] [1539] #0#13#isSet = [1539] [1539] true in [1539] [1539] #0#13 = [1539] [1539] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[1539]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
 [1532]                    {
 [1559]                      [1559] [1559] core::print [1564]([1565] a);
 [1579]                      [1579] [1579] #t32 = [1579] [1579] 1;
@@ -323,7 +323,7 @@
 [1995]                {
 [2005]                  [2005] lowered hoisted dynamic a#case#0;
 [2041]                  [2041] lowered hoisted dynamic a#case#1;
-[1995]                  if([1973] [1973] [2005] [2005] [-1] [-1] [2000] [2000] [2000] [2000] [2000] [2000] [-1] [-1] #1#0 is core::List<dynamic> && [2000] [2000] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool* #t50 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [2005]([2005] let [2005] final dynamic #t51 = [2005] [2005] a#case#0 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2000]([2000] 0){(core::int) → dynamic} in [-1] [-1] true) && [2015] [2015] [2015] [2015] [2013] [2013] a#case#0{dynamic}.> [2015]([2017] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t52 = [1973] [1973] #t49 = [2005] [2005] a#case#0 in [2005] [2005] true) || [2041] [2041] [-1] [-1] [2033] [2033] [2033] [2033] [2033] [2033] [-1] [-1] #1#0 is core::List<dynamic> && [2033] [2033] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool* #t53 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [2041]([2041] let [2041] final dynamic #t54 = [2041] [2041] a#case#1 = [2033] [2033] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2033]([2033] 1){(core::int) → dynamic} in [-1] [-1] true) && [2051] [2051] [2051] [2051] [2049] [2049] a#case#1{dynamic}.< [2051]([2053] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t55 = [1973] [1973] #t49 = [2041] [2041] a#case#1 in [2041] [2041] true)) {
+[1995]                  if([1973] [1973] [2005] [2005] [-1] [-1] [2000] [2000] [2000] [2000] [2000] [2000] [-1] [-1] #1#0 is core::List<dynamic> && [2000] [2000] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool #t50 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [2005]([2005] let [2005] final dynamic #t51 = [2005] [2005] a#case#0 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2000]([2000] 0){(core::int) → dynamic} in [-1] [-1] true) && [2015] [2015] [2015] [2015] [2013] [2013] a#case#0{dynamic}.> [2015]([2017] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t52 = [1973] [1973] #t49 = [2005] [2005] a#case#0 in [2005] [2005] true) || [2041] [2041] [-1] [-1] [2033] [2033] [2033] [2033] [2033] [2033] [-1] [-1] #1#0 is core::List<dynamic> && [2033] [2033] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool #t53 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [2041]([2041] let [2041] final dynamic #t54 = [2041] [2041] a#case#1 = [2033] [2033] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2033]([2033] 1){(core::int) → dynamic} in [-1] [-1] true) && [2051] [2051] [2051] [2051] [2049] [2049] a#case#1{dynamic}.< [2051]([2053] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t55 = [1973] [1973] #t49 = [2041] [2041] a#case#1 in [2041] [2041] true)) {
 [2005]                    [2005] dynamic a = [-1] [-1] #t49{dynamic};
 [1995]                    {
 [2066]                      [2066] [2066] core::print [2071]([2072] a);
@@ -333,7 +333,7 @@
                 }
 [2084]                {
 [2097]                  [2097] hoisted dynamic a;
-[2084]                  if([2089] [2089] [2091] [2091] [2089] [2089] [-1] [-1] #1#0 is core::Map<dynamic, dynamic> && [2091]([2091] [2091] [2091]![2091]([2091] [2091]([2091] [-1] [-1] #1#13#isSet ?{dynamic} [-1] [-1] #1#13{dynamic} : [2091] [2091] let [2091] final core::bool* #t56 = [2091] [2091] #1#13#isSet = [2091] [2091] true in [2091] [2091] #1#13 = [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[2091]([-1] #C4){(core::Object?) → dynamic}) == null) || [2091] [2091] [2091] [2091] [2091] [2091] null is dynamic && [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[2091]([-1] #C4){(core::Object?) → core::bool}) && [2097]([2097] let [2097] final dynamic #t57 = [2097] [2097] a = [2091] [2091] [-1] [-1] #1#13#isSet ?{dynamic} [-1] [-1] #1#13{dynamic} : [2091] [2091] let [2091] final core::bool* #t58 = [2091] [2091] #1#13#isSet = [2091] [2091] true in [2091] [2091] #1#13 = [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[2091]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
+[2084]                  if([2089] [2089] [2091] [2091] [2089] [2089] [-1] [-1] #1#0 is core::Map<dynamic, dynamic> && [2091]([2091] [2091] [2091]![2091]([2091] [2091]([2091] [-1] [-1] #1#13#isSet ?{dynamic} [-1] [-1] #1#13{dynamic} : [2091] [2091] let [2091] final core::bool #t56 = [2091] [2091] #1#13#isSet = [2091] [2091] true in [2091] [2091] #1#13 = [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[2091]([-1] #C4){(core::Object?) → dynamic}) == null) || [2091] [2091] [2091] [2091] [2091] [2091] null is dynamic && [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[2091]([-1] #C4){(core::Object?) → core::bool}) && [2097]([2097] let [2097] final dynamic #t57 = [2097] [2097] a = [2091] [2091] [-1] [-1] #1#13#isSet ?{dynamic} [-1] [-1] #1#13{dynamic} : [2091] [2091] let [2091] final core::bool #t58 = [2091] [2091] #1#13#isSet = [2091] [2091] true in [2091] [2091] #1#13 = [2091] [2091] [-1] [-1] #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[2091]([-1] #C4){(core::Object?) → dynamic} in [-1] [-1] true)) {
 [2084]                    {
 [2111]                      [2111] [2111] core::print [2116]([2117] a);
 [2131]                      continue #L14;
@@ -533,8 +533,8 @@
       }
 [3486]      {
 [3483]        [3483] hoisted dynamic a;
-[3486]        if([3477] [3477] [3475] [3475] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [3477]([3477] [3477] [3477]![3477]([3477] [3477]([3477] [-1] [-1] #0#9#isSet ?{dynamic} [-1] [-1] #0#9{dynamic} : [3477] [3477] let [3477] final core::bool* #t60 = [3477] [3477] #0#9#isSet = [3477] [3477] true in [3477] [3477] #0#9 = [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[3477]([-1] #C4){(core::Object?) → dynamic}) == null) || [3477] [3477] [3477] [3477] [3477] [3477] null is dynamic && [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[3477]([-1] #C4){(core::Object?) → core::bool})) {
-[3483]          [3483] [3483] a = [3477] [3477] [-1] [-1] #0#9#isSet ?{dynamic} [-1] [-1] #0#9{dynamic} : [3477] [3477] let [3477] final core::bool* #t61 = [3477] [3477] #0#9#isSet = [3477] [3477] true in [3477] [3477] #0#9 = [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[3477]([-1] #C4){(core::Object?) → dynamic};
+[3486]        if([3477] [3477] [3475] [3475] [-1] [-1] #0#0 is core::Map<dynamic, dynamic> && [3477]([3477] [3477] [3477]![3477]([3477] [3477]([3477] [-1] [-1] #0#9#isSet ?{dynamic} [-1] [-1] #0#9{dynamic} : [3477] [3477] let [3477] final core::bool #t60 = [3477] [3477] #0#9#isSet = [3477] [3477] true in [3477] [3477] #0#9 = [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[3477]([-1] #C4){(core::Object?) → dynamic}) == null) || [3477] [3477] [3477] [3477] [3477] [3477] null is dynamic && [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}[3477]([-1] #C4){(core::Object?) → core::bool})) {
+[3483]          [3483] [3483] a = [3477] [3477] [-1] [-1] #0#9#isSet ?{dynamic} [-1] [-1] #0#9{dynamic} : [3477] [3477] let [3477] final core::bool #t61 = [3477] [3477] #0#9#isSet = [3477] [3477] true in [3477] [3477] #0#9 = [3477] [3477] [-1] [-1] #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}[3477]([-1] #C4){(core::Object?) → dynamic};
 [-1]          [-1] [-1] #t59 = [3489] [3489] a;
 [3486]          break #L36;
         }
diff --git a/pkg/front_end/testcases/offsets/switch_encoding.dart.weak.transformed.expect b/pkg/front_end/testcases/offsets/switch_encoding.dart.weak.transformed.expect
index d84faeb..32845fe 100644
--- a/pkg/front_end/testcases/offsets/switch_encoding.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/offsets/switch_encoding.dart.weak.transformed.expect
@@ -43,7 +43,7 @@
 [639]    {
 [649]      [649] lowered hoisted dynamic a#case#0;
 [681]      [681] lowered hoisted dynamic a#case#1;
-[639]      if([622] [622] [649] [649] [-1] [-1] [644] [644] [644] [644] [644] [644] [-1] [-1] #0#0 is core::List<dynamic> && [644] [644] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool* #t2 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [649]([649] let [649] final dynamic #t3 = [649] [649] a#case#0 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[644]([644] 0){(core::int) → dynamic} in [-1] [-1] true) && [659] [659] [659] [659] [657] [657] a#case#0{dynamic}.> [659]([661] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t4 = [622] [622] #t1 = [649] [649] a#case#0 in [649] [649] true) || [681] [681] [-1] [-1] [673] [673] [673] [673] [673] [673] [-1] [-1] #0#0 is core::List<dynamic> && [673] [673] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool* #t5 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [681]([681] let [681] final dynamic #t6 = [681] [681] a#case#1 = [673] [673] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[673]([673] 1){(core::int) → dynamic} in [-1] [-1] true) && [691] [691] [691] [691] [689] [689] a#case#1{dynamic}.< [691]([693] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t7 = [622] [622] #t1 = [681] [681] a#case#1 in [681] [681] true)) {
+[639]      if([622] [622] [649] [649] [-1] [-1] [644] [644] [644] [644] [644] [644] [-1] [-1] #0#0 is core::List<dynamic> && [644] [644] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool #t2 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [649]([649] let [649] final dynamic #t3 = [649] [649] a#case#0 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[644]([644] 0){(core::int) → dynamic} in [-1] [-1] true) && [659] [659] [659] [659] [657] [657] a#case#0{dynamic}.> [659]([661] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t4 = [622] [622] #t1 = [649] [649] a#case#0 in [649] [649] true) || [681] [681] [-1] [-1] [673] [673] [673] [673] [673] [673] [-1] [-1] #0#0 is core::List<dynamic> && [673] [673] [644]([644] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [644] [644] let [644] final core::bool #t5 = [644] [644] #0#2#isSet = [644] [644] true in [644] [644] #0#2 = [644] [644] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [681]([681] let [681] final dynamic #t6 = [681] [681] a#case#1 = [673] [673] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[673]([673] 1){(core::int) → dynamic} in [-1] [-1] true) && [691] [691] [691] [691] [689] [689] a#case#1{dynamic}.< [691]([693] 5) as{TypeError} core::bool && [622]([622] let [622] final dynamic #t7 = [622] [622] #t1 = [681] [681] a#case#1 in [681] [681] true)) {
 [649]        [649] dynamic a = [-1] [-1] #t1{dynamic};
 [639]        {
 [702]          [702] [702] core::print [707]([708] a);
@@ -71,7 +71,7 @@
 [805]    {
 [815]      [815] lowered hoisted dynamic a#case#0;
 [847]      [847] lowered hoisted dynamic a#case#1;
-[805]      if([788] [788] [815] [815] [-1] [-1] [810] [810] [810] [810] [810] [810] [-1] [-1] #0#0 is core::List<dynamic> && [810] [810] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool* #t10 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [815]([815] let [815] final dynamic #t11 = [815] [815] a#case#0 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[810]([810] 0){(core::int) → dynamic} in [-1] [-1] true) && [825] [825] [825] [825] [823] [823] a#case#0{dynamic}.> [825]([827] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t12 = [788] [788] #t9 = [815] [815] a#case#0 in [815] [815] true) || [847] [847] [-1] [-1] [839] [839] [839] [839] [839] [839] [-1] [-1] #0#0 is core::List<dynamic> && [839] [839] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool* #t13 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [847]([847] let [847] final dynamic #t14 = [847] [847] a#case#1 = [839] [839] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[839]([839] 1){(core::int) → dynamic} in [-1] [-1] true) && [857] [857] [857] [857] [855] [855] a#case#1{dynamic}.< [857]([859] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t15 = [788] [788] #t9 = [847] [847] a#case#1 in [847] [847] true)) {
+[805]      if([788] [788] [815] [815] [-1] [-1] [810] [810] [810] [810] [810] [810] [-1] [-1] #0#0 is core::List<dynamic> && [810] [810] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool #t10 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [815]([815] let [815] final dynamic #t11 = [815] [815] a#case#0 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[810]([810] 0){(core::int) → dynamic} in [-1] [-1] true) && [825] [825] [825] [825] [823] [823] a#case#0{dynamic}.> [825]([827] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t12 = [788] [788] #t9 = [815] [815] a#case#0 in [815] [815] true) || [847] [847] [-1] [-1] [839] [839] [839] [839] [839] [839] [-1] [-1] #0#0 is core::List<dynamic> && [839] [839] [810]([810] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [810] [810] let [810] final core::bool #t13 = [810] [810] #0#2#isSet = [810] [810] true in [810] [810] #0#2 = [810] [810] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [847]([847] let [847] final dynamic #t14 = [847] [847] a#case#1 = [839] [839] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[839]([839] 1){(core::int) → dynamic} in [-1] [-1] true) && [857] [857] [857] [857] [855] [855] a#case#1{dynamic}.< [857]([859] 5) as{TypeError} core::bool && [788]([788] let [788] final dynamic #t15 = [788] [788] #t9 = [847] [847] a#case#1 in [847] [847] true)) {
 [815]        [815] dynamic a = [-1] [-1] #t9{dynamic};
 [805]        {
 [868]          [868] [868] core::print [873]([874] a);
@@ -110,7 +110,7 @@
 [1013]      {
 [1023]        [1023] lowered hoisted dynamic a#case#0;
 [1055]        [1055] lowered hoisted dynamic a#case#1;
-[1013]        if([996] [996] [1023] [1023] [-1] [-1] [1018] [1018] [1018] [1018] [1018] [1018] [-1] [-1] #0#0 is core::List<dynamic> && [1018] [1018] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool* #t19 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1023]([1023] let [1023] final dynamic #t20 = [1023] [1023] a#case#0 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1018]([1018] 0){(core::int) → dynamic} in [-1] [-1] true) && [1033] [1033] [1033] [1033] [1031] [1031] a#case#0{dynamic}.> [1033]([1035] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t21 = [996] [996] #t18 = [1023] [1023] a#case#0 in [1023] [1023] true) || [1055] [1055] [-1] [-1] [1047] [1047] [1047] [1047] [1047] [1047] [-1] [-1] #0#0 is core::List<dynamic> && [1047] [1047] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool* #t22 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1055]([1055] let [1055] final dynamic #t23 = [1055] [1055] a#case#1 = [1047] [1047] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1047]([1047] 1){(core::int) → dynamic} in [-1] [-1] true) && [1065] [1065] [1065] [1065] [1063] [1063] a#case#1{dynamic}.< [1065]([1067] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t24 = [996] [996] #t18 = [1055] [1055] a#case#1 in [1055] [1055] true)) {
+[1013]        if([996] [996] [1023] [1023] [-1] [-1] [1018] [1018] [1018] [1018] [1018] [1018] [-1] [-1] #0#0 is core::List<dynamic> && [1018] [1018] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool #t19 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1023]([1023] let [1023] final dynamic #t20 = [1023] [1023] a#case#0 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1018]([1018] 0){(core::int) → dynamic} in [-1] [-1] true) && [1033] [1033] [1033] [1033] [1031] [1031] a#case#0{dynamic}.> [1033]([1035] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t21 = [996] [996] #t18 = [1023] [1023] a#case#0 in [1023] [1023] true) || [1055] [1055] [-1] [-1] [1047] [1047] [1047] [1047] [1047] [1047] [-1] [-1] #0#0 is core::List<dynamic> && [1047] [1047] [1018]([1018] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1018] [1018] let [1018] final core::bool #t22 = [1018] [1018] #0#2#isSet = [1018] [1018] true in [1018] [1018] #0#2 = [1018] [1018] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1055]([1055] let [1055] final dynamic #t23 = [1055] [1055] a#case#1 = [1047] [1047] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1047]([1047] 1){(core::int) → dynamic} in [-1] [-1] true) && [1065] [1065] [1065] [1065] [1063] [1063] a#case#1{dynamic}.< [1065]([1067] 5) as{TypeError} core::bool && [996]([996] let [996] final dynamic #t24 = [996] [996] #t18 = [1055] [1055] a#case#1 in [1055] [1055] true)) {
 [1023]          [1023] dynamic a = [-1] [-1] #t18{dynamic};
 [1013]          {
 [1076]            [1076] [1076] core::print [1081]([1082] a);
@@ -201,7 +201,7 @@
 [1443]                {
 [1453]                  [1453] lowered hoisted dynamic a#case#0;
 [1489]                  [1489] lowered hoisted dynamic a#case#1;
-[1443]                  if([1421] [1421] [1453] [1453] [-1] [-1] [1448] [1448] [1448] [1448] [1448] [1448] [-1] [-1] #0#0 is core::List<dynamic> && [1448] [1448] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool* #t31 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1453]([1453] let [1453] final dynamic #t32 = [1453] [1453] a#case#0 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1448]([1448] 0){(core::int) → dynamic} in [-1] [-1] true) && [1463] [1463] [1463] [1463] [1461] [1461] a#case#0{dynamic}.> [1463]([1465] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t33 = [1421] [1421] #t30 = [1453] [1453] a#case#0 in [1453] [1453] true) || [1489] [1489] [-1] [-1] [1481] [1481] [1481] [1481] [1481] [1481] [-1] [-1] #0#0 is core::List<dynamic> && [1481] [1481] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool* #t34 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1489]([1489] let [1489] final dynamic #t35 = [1489] [1489] a#case#1 = [1481] [1481] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1481]([1481] 1){(core::int) → dynamic} in [-1] [-1] true) && [1499] [1499] [1499] [1499] [1497] [1497] a#case#1{dynamic}.< [1499]([1501] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t36 = [1421] [1421] #t30 = [1489] [1489] a#case#1 in [1489] [1489] true)) {
+[1443]                  if([1421] [1421] [1453] [1453] [-1] [-1] [1448] [1448] [1448] [1448] [1448] [1448] [-1] [-1] #0#0 is core::List<dynamic> && [1448] [1448] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool #t31 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [1453]([1453] let [1453] final dynamic #t32 = [1453] [1453] a#case#0 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1448]([1448] 0){(core::int) → dynamic} in [-1] [-1] true) && [1463] [1463] [1463] [1463] [1461] [1461] a#case#0{dynamic}.> [1463]([1465] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t33 = [1421] [1421] #t30 = [1453] [1453] a#case#0 in [1453] [1453] true) || [1489] [1489] [-1] [-1] [1481] [1481] [1481] [1481] [1481] [1481] [-1] [-1] #0#0 is core::List<dynamic> && [1481] [1481] [1448]([1448] [-1] [-1] #0#2#isSet ?{core::int} [-1] [-1] #0#2{core::int} : [1448] [1448] let [1448] final core::bool #t34 = [1448] [1448] #0#2#isSet = [1448] [1448] true in [1448] [1448] #0#2 = [1448] [1448] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [1489]([1489] let [1489] final dynamic #t35 = [1489] [1489] a#case#1 = [1481] [1481] [-1] [-1] #0#0{core::List<dynamic>}.{core::List::[]}[1481]([1481] 1){(core::int) → dynamic} in [-1] [-1] true) && [1499] [1499] [1499] [1499] [1497] [1497] a#case#1{dynamic}.< [1499]([1501] 5) as{TypeError} core::bool && [1421]([1421] let [1421] final dynamic #t36 = [1421] [1421] #t30 = [1489] [1489] a#case#1 in [1489] [1489] true)) {
 [1453]                    [1453] dynamic a = [-1] [-1] #t30{dynamic};
 [1443]                    {
 [1514]                      [1514] [1514] core::print [1519]([1520] a);
@@ -312,7 +312,7 @@
 [1995]                {
 [2005]                  [2005] lowered hoisted dynamic a#case#0;
 [2041]                  [2041] lowered hoisted dynamic a#case#1;
-[1995]                  if([1973] [1973] [2005] [2005] [-1] [-1] [2000] [2000] [2000] [2000] [2000] [2000] [-1] [-1] #1#0 is core::List<dynamic> && [2000] [2000] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool* #t40 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [2005]([2005] let [2005] final dynamic #t41 = [2005] [2005] a#case#0 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2000]([2000] 0){(core::int) → dynamic} in [-1] [-1] true) && [2015] [2015] [2015] [2015] [2013] [2013] a#case#0{dynamic}.> [2015]([2017] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t42 = [1973] [1973] #t39 = [2005] [2005] a#case#0 in [2005] [2005] true) || [2041] [2041] [-1] [-1] [2033] [2033] [2033] [2033] [2033] [2033] [-1] [-1] #1#0 is core::List<dynamic> && [2033] [2033] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool* #t43 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [2041]([2041] let [2041] final dynamic #t44 = [2041] [2041] a#case#1 = [2033] [2033] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2033]([2033] 1){(core::int) → dynamic} in [-1] [-1] true) && [2051] [2051] [2051] [2051] [2049] [2049] a#case#1{dynamic}.< [2051]([2053] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t45 = [1973] [1973] #t39 = [2041] [2041] a#case#1 in [2041] [2041] true)) {
+[1995]                  if([1973] [1973] [2005] [2005] [-1] [-1] [2000] [2000] [2000] [2000] [2000] [2000] [-1] [-1] #1#0 is core::List<dynamic> && [2000] [2000] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool #t40 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C4 && [2005]([2005] let [2005] final dynamic #t41 = [2005] [2005] a#case#0 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2000]([2000] 0){(core::int) → dynamic} in [-1] [-1] true) && [2015] [2015] [2015] [2015] [2013] [2013] a#case#0{dynamic}.> [2015]([2017] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t42 = [1973] [1973] #t39 = [2005] [2005] a#case#0 in [2005] [2005] true) || [2041] [2041] [-1] [-1] [2033] [2033] [2033] [2033] [2033] [2033] [-1] [-1] #1#0 is core::List<dynamic> && [2033] [2033] [2000]([2000] [-1] [-1] #1#2#isSet ?{core::int} [-1] [-1] #1#2{core::int} : [2000] [2000] let [2000] final core::bool #t43 = [2000] [2000] #1#2#isSet = [2000] [2000] true in [2000] [2000] #1#2 = [2000] [2000] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} [-1] [-1] #C7 && [2041]([2041] let [2041] final dynamic #t44 = [2041] [2041] a#case#1 = [2033] [2033] [-1] [-1] #1#0{core::List<dynamic>}.{core::List::[]}[2033]([2033] 1){(core::int) → dynamic} in [-1] [-1] true) && [2051] [2051] [2051] [2051] [2049] [2049] a#case#1{dynamic}.< [2051]([2053] 5) as{TypeError} core::bool && [1973]([1973] let [1973] final dynamic #t45 = [1973] [1973] #t39 = [2041] [2041] a#case#1 in [2041] [2041] true)) {
 [2005]                    [2005] dynamic a = [-1] [-1] #t39{dynamic};
 [1995]                    {
 [2066]                      [2066] [2066] core::print [2071]([2072] a);
diff --git a/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
index 4360304..487e787 100644
--- a/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/access_order.dart.strong.transformed.expect
@@ -597,16 +597,16 @@
     {
       {
         hoisted core::Object x;
-        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t14 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (let final core::Object? #t15 = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in let final core::Object? #t17 = x = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool* #t18 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in true) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool* #t19 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})) {
+        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t14 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (let final core::Object? #t15 = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in let final core::Object? #t17 = x = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t18 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in true) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t19 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})) {
           #t13 = "match-1";
           break #L3;
         }
       }
       {
         hoisted core::Object x;
-        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t20 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool* #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})) {
-          (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool* #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
-          x = (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool* #t23 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
+        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t20 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})) {
+          (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
+          x = (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t23 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
           #t13 = "match-2";
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect
index cbe6edf..e9c7f35 100644
--- a/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/access_order.dart.weak.transformed.expect
@@ -599,16 +599,16 @@
     {
       {
         hoisted core::Object x;
-        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (let final core::Object? #t14 = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in let final core::Object? #t16 = x = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in true) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool* #t18 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})) {
+        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (let final core::Object? #t14 = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in let final core::Object? #t16 = x = (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})! in true) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t18 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})) {
           #t12 = "match-1";
           break #L3;
         }
       }
       {
         hoisted core::Object x;
-        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t19 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool* #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})) {
-          (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool* #t21 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
-          x = (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool* #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
+        if(#0#0 is core::List<core::Object?> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t19 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::Object?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && #C10 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::Object?} #0#6{core::Object?} : let final core::bool #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::Object?>}.{core::List::[]}(0){(core::int) → core::Object?})) {
+          (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t21 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
+          x = (#0#8#isSet ?{core::Object?} #0#8{core::Object?} : let final core::bool #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<core::Object?>}.{core::List::[]}(1){(core::int) → core::Object?})!;
           #t12 = "match-2";
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
index df3a0b2..7a76db6 100644
--- a/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cache_lookups.dart.strong.transformed.expect
@@ -28,7 +28,7 @@
     synthesized dynamic #0#13;
     synthesized core::bool #0#13#isSet = false;
     {
-      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int})) {
         {
           core::print("Class");
           break #L1;
@@ -37,7 +37,7 @@
     }
     {
       hoisted core::int a;
-      if(#0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t3 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t4 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t6 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t7 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) || #0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t8 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t9 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t10 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t11 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t12 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t3 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t4 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t6 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t7 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) || #0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t8 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t9 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t10 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t11 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t12 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           core::print("List");
         }
diff --git a/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect
index 7325453..8011b97 100644
--- a/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cache_lookups.dart.weak.transformed.expect
@@ -28,7 +28,7 @@
     synthesized dynamic #0#13;
     synthesized core::bool #0#13#isSet = false;
     {
-      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int})) {
         {
           core::print("Class");
           break #L1;
@@ -37,7 +37,7 @@
     }
     {
       hoisted core::int a;
-      if(#0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t3 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t4 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t6 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t7 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) || #0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t8 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t9 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t10 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t11 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t12 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t3 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t4 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t6 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t7 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) || #0#0 is core::List<dynamic> && (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t8 = #0#10#isSet = true in #0#10 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t9 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t10 = a = (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t11 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t12 = #0#13#isSet = true in #0#13 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           core::print("List");
         }
diff --git a/pkg/front_end/testcases/patterns/caching.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/caching.dart.strong.transformed.expect
index 28cbe2f..27e34ea 100644
--- a/pkg/front_end/testcases/patterns/caching.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/caching.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
     final synthesized dynamic #1#0 = o;
     synthesized core::Object? #1#2;
     synthesized core::bool #1#2#isSet = false;
-    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
       return 2;
     }
   }
@@ -37,7 +37,7 @@
     final synthesized dynamic #3#0 = o;
     synthesized core::Object? #3#2;
     synthesized core::bool #3#2#isSet = false;
-    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
       return 4;
     }
   }
@@ -69,7 +69,7 @@
     final synthesized dynamic #8#0 = o;
     synthesized core::int #8#2;
     synthesized core::bool #8#2#isSet = false;
-    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 9;
     }
   }
@@ -81,7 +81,7 @@
     synthesized core::bool #9#15#isSet = false;
     synthesized dynamic #9#19;
     synthesized core::bool #9#19#isSet = false;
-    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
       return 10;
     }
   }
@@ -95,7 +95,7 @@
     synthesized core::bool #10#16#isSet = false;
     synthesized dynamic #10#20;
     synthesized core::bool #10#20#isSet = false;
-    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 11;
     }
   }
@@ -139,7 +139,7 @@
     final synthesized dynamic #17#0 = o;
     synthesized core::int? #17#4;
     synthesized core::bool #17#4#isSet = false;
-    if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t42 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t43 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t44 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t43 == null ?{core::int} #t43 as{Unchecked} core::int : #t43{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+    if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t42 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t43 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t44 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t43 == null ?{core::int} #t43 as{Unchecked} core::int : #t43{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
       return 18;
     }
   }
@@ -165,7 +165,7 @@
     final synthesized dynamic #21#0 = o;
     synthesized dynamic #21#4;
     synthesized core::bool #21#4#isSet = false;
-    if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t45 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t46 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+    if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t45 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t46 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
       return 22;
     }
   }
@@ -173,7 +173,7 @@
     final synthesized dynamic #22#0 = o;
     synthesized dynamic #22#4;
     synthesized core::bool #22#4#isSet = false;
-    if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t47 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t48 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+    if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t47 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t48 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
       return 23;
     }
   }
@@ -183,8 +183,8 @@
     synthesized core::bool #23#4#isSet = false;
     {
       hoisted dynamic a;
-      if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t49 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
-        a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t50 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
+      if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t49 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
+        a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t50 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
         {
           return 24;
         }
@@ -197,8 +197,8 @@
     synthesized core::bool #24#4#isSet = false;
     {
       hoisted core::int b;
-      if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t51 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t52 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t53 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+      if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t51 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t52 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t53 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
         {
           return 25;
         }
@@ -245,7 +245,7 @@
       final synthesized dynamic #1#0 = o;
       synthesized core::Object? #1#2;
       synthesized core::bool #1#2#isSet = false;
-      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t55 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t56 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t57 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t58 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t59 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t60 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t55 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t56 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t57 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t58 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t59 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t60 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         return 2;
       }
       else {
@@ -257,7 +257,7 @@
           final synthesized dynamic #3#0 = o;
           synthesized core::Object? #3#2;
           synthesized core::bool #3#2#isSet = false;
-          if(#3#0 is ({g: core::Object?}) && (let final core::int #t61 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t62 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t63 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+          if(#3#0 is ({g: core::Object?}) && (let final core::int #t61 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t62 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t63 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
             return 4;
           }
           else {
@@ -284,7 +284,7 @@
                     final synthesized dynamic #8#0 = o;
                     synthesized core::int #8#2;
                     synthesized core::bool #8#2#isSet = false;
-                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t65 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t66 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t65 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t66 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                       return 9;
                     }
                     else {
@@ -295,7 +295,7 @@
                       synthesized core::bool #9#15#isSet = false;
                       synthesized dynamic #9#19;
                       synthesized core::bool #9#19#isSet = false;
-                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t68 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t69 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t70 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t71 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t72 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t73 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t74 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t75 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t76 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t77 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t68 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t69 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t70 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t71 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t72 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t73 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t74 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t75 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t76 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t77 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
                         return 10;
                       }
                       else {
@@ -308,7 +308,7 @@
                         synthesized core::bool #10#16#isSet = false;
                         synthesized dynamic #10#20;
                         synthesized core::bool #10#20#isSet = false;
-                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t78 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t79 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t80 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t81 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t82 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t85 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t86 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t87 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t88 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t89 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t90 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t91 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t92 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t93 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t94 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t95 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t78 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t79 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t80 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t81 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t82 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t85 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t86 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t87 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t88 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t89 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t90 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t91 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t92 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t93 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t94 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t95 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                           return 11;
                         }
                         else {
@@ -345,7 +345,7 @@
                                       final synthesized dynamic #17#0 = o;
                                       synthesized core::int? #17#4;
                                       synthesized core::bool #17#4#isSet = false;
-                                      if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t96 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t97 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool* #t98 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t97 == null ?{core::int} #t97 as{Unchecked} core::int : #t97{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+                                      if(#17#0 is core::Map<core::int, core::int> && (!((#17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t96 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #17#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t97 = #17#4#isSet ?{core::int?} #17#4{core::int?} : let final core::bool #t98 = #17#4#isSet = true in #17#4 = #17#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t97 == null ?{core::int} #t97 as{Unchecked} core::int : #t97{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
                                         return 18;
                                       }
                                       else {
@@ -367,14 +367,14 @@
                                               final synthesized dynamic #21#0 = o;
                                               synthesized dynamic #21#4;
                                               synthesized core::bool #21#4#isSet = false;
-                                              if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t99 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool* #t100 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+                                              if(#21#0 is core::Map<dynamic, dynamic> && (!((#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t99 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #21#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#21#4#isSet ?{dynamic} #21#4{dynamic} : let final core::bool #t100 = #21#4#isSet = true in #21#4 = #21#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
                                                 return 22;
                                               }
                                               else {
                                                 final synthesized dynamic #22#0 = o;
                                                 synthesized dynamic #22#4;
                                                 synthesized core::bool #22#4#isSet = false;
-                                                if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t101 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool* #t102 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+                                                if(#22#0 is core::Map<dynamic, dynamic> && (!((#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t101 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #22#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#22#4#isSet ?{dynamic} #22#4{dynamic} : let final core::bool #t102 = #22#4#isSet = true in #22#4 = #22#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
                                                   return 23;
                                                 }
                                                 else {
@@ -383,8 +383,8 @@
                                                   synthesized core::bool #23#4#isSet = false;
                                                   {
                                                     hoisted dynamic a;
-                                                    if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t103 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
-                                                      a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool* #t104 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
+                                                    if(#23#0 is core::Map<dynamic, dynamic> && (!((#23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t103 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #23#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
+                                                      a = #23#4#isSet ?{dynamic} #23#4{dynamic} : let final core::bool #t104 = #23#4#isSet = true in #23#4 = #23#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
                                                       {
                                                         return 24;
                                                       }
@@ -395,8 +395,8 @@
                                                       synthesized core::bool #24#4#isSet = false;
                                                       {
                                                         hoisted core::int b;
-                                                        if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t105 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t106 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t107 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+                                                        if(#24#0 is core::Map<dynamic, dynamic> && (!((#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t105 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t106 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t107 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
                                                           {
                                                             return 25;
                                                           }
@@ -516,7 +516,7 @@
       }
     }
     {
-      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t109 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t110 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t111 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t112 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t113 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t114 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t109 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t110 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t111 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t112 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t113 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t114 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         {
           return 2;
         }
@@ -530,63 +530,63 @@
       }
     }
     {
-      if(#0#0 is ({g: core::Object?}) && (let final core::int #t115 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t116 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t117 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+      if(#0#0 is ({g: core::Object?}) && (let final core::int #t115 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t116 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t117 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
         {
           return 4;
         }
       }
     }
     {
-      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t118 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t119 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t118 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t119 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
         {
           return 5;
         }
       }
     }
     {
-      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t120 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t120 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
         {
           return 6;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t121 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t122 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t123 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t121 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t122 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t123 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 7;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t124 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t125 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t126 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t127 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t124 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t125 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t126 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t127 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 8;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t128 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t129 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t130 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t131 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t132 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t133 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t128 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t129 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t130 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t131 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t132 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t133 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 9;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t134 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t135 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t136 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t137 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t138 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t139 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t140 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t141 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t142 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t143 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t144 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t145 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t146 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t147 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t148 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t134 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t135 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t136 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t137 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t138 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t139 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t140 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t141 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t142 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t143 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t144 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t145 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t146 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t147 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t148 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
         {
           return 10;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t149 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t151 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t152 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t153 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t154 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t155 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t156 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t157 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t158 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t159 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t160 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t161 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t162 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t163 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t164 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t165 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t166 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t167 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t168 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t169 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t170 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t149 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t151 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t152 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t153 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t154 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t155 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t156 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t157 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t158 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t159 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t160 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t161 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t162 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t163 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t164 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t165 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t166 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t167 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t168 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t169 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t170 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 11;
         }
       }
     }
     {
-      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t171 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t171 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
         {
           return 12;
         }
@@ -600,7 +600,7 @@
       }
     }
     {
-      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t172 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t172 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
         {
           return 14;
         }
@@ -628,14 +628,14 @@
       }
     }
     {
-      if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t173 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t174 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t175 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t174 == null ?{core::int} #t174 as{Unchecked} core::int : #t174{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+      if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t173 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t174 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t175 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t174 == null ?{core::int} #t174 as{Unchecked} core::int : #t174{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
         {
           return 18;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t176 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t176 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
         {
           return 19;
         }
@@ -656,14 +656,14 @@
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t177 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t178 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t177 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t178 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
         {
           return 22;
         }
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t179 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t180 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t179 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t180 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
         {
           return 23;
         }
@@ -671,7 +671,7 @@
     }
     {
       hoisted dynamic a;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t181 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && (let final dynamic #t182 = a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t183 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t181 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && (let final dynamic #t182 = a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t183 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic} in true)) {
         {
           return 24;
         }
@@ -679,7 +679,7 @@
     }
     {
       hoisted core::int b;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t184 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t185 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t186 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t187 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t184 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t185 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t186 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t187 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
         {
           return 25;
         }
@@ -694,7 +694,7 @@
     }
     {
       hoisted dynamic c;
-      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t188 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t189 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t190 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
+      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t188 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t189 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t190 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
         {
           return 27;
         }
@@ -775,7 +775,7 @@
         }
       }
       {
-        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t193 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t194 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t195 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t196 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t197 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t198 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t193 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t194 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t195 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t196 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t197 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t198 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
           #t192 = 2;
           break #L2;
         }
@@ -787,55 +787,55 @@
         }
       }
       {
-        if(#0#0 is ({g: core::Object?}) && (let final core::int #t199 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t200 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t201 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+        if(#0#0 is ({g: core::Object?}) && (let final core::int #t199 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t200 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t201 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
           #t192 = 4;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t202 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t203 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t202 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t203 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
           #t192 = 5;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t204 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t204 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
           #t192 = 6;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t205 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t206 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t207 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t205 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t206 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t207 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t192 = 7;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t208 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t209 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t210 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t211 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t208 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t209 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t210 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t211 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t192 = 8;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t212 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t213 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t214 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t215 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t216 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t217 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t212 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t213 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t214 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t215 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t216 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t217 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t192 = 9;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t218 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t220 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t221 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t222 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t223 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t224 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t225 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t226 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t227 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t228 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t229 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t230 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t231 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t232 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t218 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t220 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t221 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t222 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t223 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t224 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t225 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t226 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t227 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t228 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t229 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t230 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t231 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t232 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
           #t192 = 10;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t233 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t234 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t235 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t236 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t237 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t238 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t239 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t240 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t241 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t242 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t243 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t244 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t245 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t246 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t247 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t248 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t249 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t250 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t251 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t252 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t253 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t254 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t233 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t234 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t235 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t236 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t237 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t238 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t239 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t240 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t241 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t242 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t243 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t244 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t245 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t246 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t247 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t248 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t249 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t250 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t251 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t252 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t253 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t254 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t192 = 11;
           break #L2;
         }
       }
       {
-        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t255 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t255 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
           #t192 = 12;
           break #L2;
         }
@@ -847,7 +847,7 @@
         }
       }
       {
-        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t256 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t256 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
           #t192 = 14;
           break #L2;
         }
@@ -871,13 +871,13 @@
         }
       }
       {
-        if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t257 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t258 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool* #t259 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t258 == null ?{core::int} #t258 as{Unchecked} core::int : #t258{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
+        if(#0#0 is core::Map<core::int, core::int> && (!((#0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t257 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let core::int? #t258 = #0#84#isSet ?{core::int?} #0#84{core::int?} : let final core::bool #t259 = #0#84#isSet = true in #0#84 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t258 == null ?{core::int} #t258 as{Unchecked} core::int : #t258{core::int}).{core::num::>=}(#C11){(core::num) → core::bool}) {
           #t192 = 18;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t260 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t260 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
           #t192 = 19;
           break #L2;
         }
@@ -895,29 +895,29 @@
         }
       }
       {
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t261 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool* #t262 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t261 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (#0#92#isSet ?{dynamic} #0#92{dynamic} : let final core::bool #t262 = #0#92#isSet = true in #0#92 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) is core::int) {
           #t192 = 22;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t263 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool* #t264 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t263 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#94#isSet ?{dynamic} #0#94{dynamic} : let final core::bool #t264 = #0#94#isSet = true in #0#94 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is core::String) {
           #t192 = 23;
           break #L2;
         }
       }
       {
         hoisted dynamic a;
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t265 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
-          a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool* #t266 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t265 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) {
+          a = #0#96#isSet ?{dynamic} #0#96{dynamic} : let final core::bool #t266 = #0#96#isSet = true in #0#96 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C7){(core::Object?) → dynamic};
           #t192 = 24;
           break #L2;
         }
       }
       {
         hoisted core::int b;
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t267 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t268 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t269 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t267 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t268 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t269 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
           #t192 = 25;
           break #L2;
         }
@@ -930,8 +930,8 @@
       }
       {
         hoisted dynamic c;
-        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t270 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
-          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t271 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
+        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t270 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
+          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t271 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
           #t192 = 27;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect
index 95af3f4..6eda084 100644
--- a/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/caching.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     final synthesized dynamic #1#0 = o;
     synthesized core::Object? #1#2;
     synthesized core::bool #1#2#isSet = false;
-    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+    if(#1#0 is ({f: core::Object?}) && ((let final core::int #t1 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t2 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t3 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t4 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t5 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t6 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
       return 2;
     }
   }
@@ -38,7 +38,7 @@
     final synthesized dynamic #3#0 = o;
     synthesized core::Object? #3#2;
     synthesized core::bool #3#2#isSet = false;
-    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+    if(#3#0 is ({g: core::Object?}) && (let final core::int #t7 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t8 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t9 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
       return 4;
     }
   }
@@ -70,7 +70,7 @@
     final synthesized dynamic #8#0 = o;
     synthesized core::int #8#2;
     synthesized core::bool #8#2#isSet = false;
-    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t11 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t12 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 9;
     }
   }
@@ -82,7 +82,7 @@
     synthesized core::bool #9#15#isSet = false;
     synthesized dynamic #9#19;
     synthesized core::bool #9#19#isSet = false;
-    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+    if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t13 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t14 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t15 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t16 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t17 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t18 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t19 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t20 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t21 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t22 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t23 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
       return 10;
     }
   }
@@ -96,7 +96,7 @@
     synthesized core::bool #10#16#isSet = false;
     synthesized dynamic #10#20;
     synthesized core::bool #10#20#isSet = false;
-    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+    if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t24 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t25 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t26 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t27 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t28 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t29 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t30 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t31 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t32 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t33 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t34 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t35 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t36 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t37 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t38 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t39 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t40 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t41 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
       return 11;
     }
   }
@@ -190,8 +190,8 @@
     synthesized core::bool #24#4#isSet = false;
     {
       hoisted core::int b;
-      if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t42 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+      if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t42 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+        b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t43 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
         {
           return 25;
         }
@@ -238,7 +238,7 @@
       final synthesized dynamic #1#0 = o;
       synthesized core::Object? #1#2;
       synthesized core::bool #1#2#isSet = false;
-      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t45 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t46 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t48 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t49 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#1#0 is ({f: core::Object?}) && ((let final core::int #t45 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t46 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t48 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t49 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         return 2;
       }
       else {
@@ -250,7 +250,7 @@
           final synthesized dynamic #3#0 = o;
           synthesized core::Object? #3#2;
           synthesized core::bool #3#2#isSet = false;
-          if(#3#0 is ({g: core::Object?}) && (let final core::int #t51 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t52 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool* #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+          if(#3#0 is ({g: core::Object?}) && (let final core::int #t51 = (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t52 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#3#2#isSet ?{core::Object?} #3#2{core::Object?} : let final core::bool #t53 = #3#2#isSet = true in #3#2 = #3#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
             return 4;
           }
           else {
@@ -277,7 +277,7 @@
                     final synthesized dynamic #8#0 = o;
                     synthesized core::int #8#2;
                     synthesized core::bool #8#2#isSet = false;
-                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t55 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool* #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                    if(#8#0 is core::List<dynamic> && (#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t55 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C8 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #8#0{core::List<dynamic>}.{core::List::[]}((#8#2#isSet ?{core::int} #8#2{core::int} : let final core::bool #t56 = #8#2#isSet = true in #8#2 = #8#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                       return 9;
                     }
                     else {
@@ -288,7 +288,7 @@
                       synthesized core::bool #9#15#isSet = false;
                       synthesized dynamic #9#19;
                       synthesized core::bool #9#19#isSet = false;
-                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t57 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t58 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t59 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t60 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool* #t61 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t62 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t63 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t64 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t65 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool* #t66 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool* #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+                      if(#9#0 is core::List<dynamic> && #9#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C7){(core::num) → core::bool} && #C8 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C3 =={core::num::==}{(core::Object) → core::bool} #9#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t57 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t58 = (#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t59 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t60 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#9#15#isSet ?{dynamic} #9#15{dynamic} : let final core::bool #t61 = #9#15#isSet = true in #9#15 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t62 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t63 = (#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t64 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t65 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#9#19#isSet ?{dynamic} #9#19{dynamic} : let final core::bool #t66 = #9#19#isSet = true in #9#19 = (#9#12#isSet ?{core::List<dynamic>} #9#12{core::List<dynamic>} : let final core::bool #t67 = #9#12#isSet = true in #9#12 = #9#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
                         return 10;
                       }
                       else {
@@ -301,7 +301,7 @@
                         synthesized core::bool #10#16#isSet = false;
                         synthesized dynamic #10#20;
                         synthesized core::bool #10#20#isSet = false;
-                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t68 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t69 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t70 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t71 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t72 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t73 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t74 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool* #t75 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t76 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t77 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t78 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t79 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t80 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t81 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool* #t82 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool* #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool* #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+                        if(#10#0 is core::List<dynamic> && (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t68 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C3 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && #C4 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} && ((#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t69 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t70 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t71 = (#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t72 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t73 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t74 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#10#16#isSet ?{dynamic} #10#16{dynamic} : let final core::bool #t75 = #10#16#isSet = true in #10#16 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t76 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t77 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t78 = (#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t79 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t80 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t81 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#10#20#isSet ?{dynamic} #10#20{dynamic} : let final core::bool #t82 = #10#20#isSet = true in #10#20 = (#10#12#isSet ?{core::List<dynamic>} #10#12{core::List<dynamic>} : let final core::bool #t83 = #10#12#isSet = true in #10#12 = #10#0{core::List<dynamic>}.{core::List::sublist}(2, (#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t84 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} #10#0{core::List<dynamic>}.{core::List::[]}((#10#2#isSet ?{core::int} #10#2{core::int} : let final core::bool #t85 = #10#2#isSet = true in #10#2 = #10#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
                           return 11;
                         }
                         else {
@@ -380,8 +380,8 @@
                                                       synthesized core::bool #24#4#isSet = false;
                                                       {
                                                         hoisted core::int b;
-                                                        if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t86 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool* #t87 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+                                                        if(#24#0 is core::Map<dynamic, dynamic> && #24#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t86 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+                                                          b = (#24#4#isSet ?{dynamic} #24#4{dynamic} : let final core::bool #t87 = #24#4#isSet = true in #24#4 = #24#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
                                                           {
                                                             return 25;
                                                           }
@@ -493,7 +493,7 @@
       }
     }
     {
-      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t89 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t90 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t91 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t92 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t94 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+      if(#0#0 is ({f: core::Object?}) && ((let final core::int #t89 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t90 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t91 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t92 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t93 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t94 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
         {
           return 2;
         }
@@ -507,63 +507,63 @@
       }
     }
     {
-      if(#0#0 is ({g: core::Object?}) && (let final core::int #t95 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t96 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t97 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+      if(#0#0 is ({g: core::Object?}) && (let final core::int #t95 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t96 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t97 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
         {
           return 4;
         }
       }
     }
     {
-      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t98 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t99 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+      if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t98 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t99 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
         {
           return 5;
         }
       }
     }
     {
-      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t100 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+      if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t100 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
         {
           return 6;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t101 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t102 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t103 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t101 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t102 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t103 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 7;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t104 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t105 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t106 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t107 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t104 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t105 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t106 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t107 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 8;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t108 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t109 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t110 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t111 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t112 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t113 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t108 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t109 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t110 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t111 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t112 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t113 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 9;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t114 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t116 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t117 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t118 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t119 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t120 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t121 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t124 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t125 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t126 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+      if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t114 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t115 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t116 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t117 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t118 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t119 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t120 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t121 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t122 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t123 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t124 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t125 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t126 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t127 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t128 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
         {
           return 10;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t129 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t130 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t131 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t132 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t133 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t134 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t135 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t136 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t137 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t138 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t139 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t140 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t141 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t142 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t143 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t144 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t145 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t146 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t147 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t148 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t149 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t129 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t130 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t131 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t132 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t133 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t134 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t135 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t136 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t137 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t138 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t139 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t140 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t141 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t142 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t143 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t144 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t145 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t146 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t147 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t148 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t149 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t150 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 11;
         }
       }
     }
     {
-      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t151 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+      if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t151 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
         {
           return 12;
         }
@@ -577,7 +577,7 @@
       }
     }
     {
-      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t152 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+      if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t152 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
         {
           return 14;
         }
@@ -612,7 +612,7 @@
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t153 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+      if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t153 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
         {
           return 19;
         }
@@ -656,7 +656,7 @@
     }
     {
       hoisted core::int b;
-      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t155 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t156 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t157 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t155 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t156 = b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t157 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true))) {
         {
           return 25;
         }
@@ -671,7 +671,7 @@
     }
     {
       hoisted dynamic c;
-      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t158 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t159 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t160 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
+      if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t158 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?}) && (let final core::Object? #t159 = c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t160 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?} in true)) {
         {
           return 27;
         }
@@ -744,7 +744,7 @@
         }
       }
       {
-        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t163 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t164 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t165 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool* #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
+        if(#0#0 is ({f: core::Object?}) && ((let final core::int #t163 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t164 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t165 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final core::int #t166 = (#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t167 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int in ((#0#4#isSet ?{core::Object?} #0#4{core::Object?} : let final core::bool #t168 = #0#4#isSet = true in #0#4 = #0#0{({f: core::Object?})}.f{core::Object?}) as core::int).{core::num::<}(#C3){(core::num) → core::bool}))) {
           #t162 = 2;
           break #L2;
         }
@@ -756,55 +756,55 @@
         }
       }
       {
-        if(#0#0 is ({g: core::Object?}) && (let final core::int #t169 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t170 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool* #t171 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
+        if(#0#0 is ({g: core::Object?}) && (let final core::int #t169 = (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t170 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int in #C6 =={core::num::==}{(core::Object) → core::bool} (#0#15#isSet ?{core::Object?} #0#15{core::Object?} : let final core::bool #t171 = #0#15#isSet = true in #0#15 = #0#0{({g: core::Object?})}.g{core::Object?}) as core::int)) {
           #t162 = 4;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t172 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t173 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
+        if(#0#0 is ({a: core::Object?}) && (let final core::Object? #t172 = (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t173 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?})}.a{core::Object?})! in true)) {
           #t162 = 5;
           break #L2;
         }
       }
       {
-        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t174 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
+        if(#0#0 is ({b: core::Object?}) && (!((#0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t174 = #0#23#isSet = true in #0#23 = #0#0{({b: core::Object?})}.b{core::Object?}) == null) && true)) {
           #t162 = 6;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t175 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t176 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t177 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t175 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t176 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t177 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t162 = 7;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t178 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t179 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t180 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t181 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t178 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t179 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t180 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t181 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
           #t162 = 8;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t182 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t183 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t184 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t185 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t186 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t187 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t182 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t183 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t184 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t185 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t186 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t187 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t162 = 9;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool* #t188 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t189 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t190 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t191 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t192 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t193 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t194 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool* #t196 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t197 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t198 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t199 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool* #t201 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool* #t202 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
+        if(#0#0 is core::List<dynamic> && (#0#34#isSet ?{core::bool} #0#34{core::bool} : let final core::bool #t188 = #0#34#isSet = true in #0#34 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t189 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C7){(core::num) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t190 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t191 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t192 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t193 = (#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t194 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t195 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#50#isSet ?{dynamic} #0#50{dynamic} : let final core::bool #t196 = #0#50#isSet = true in #0#50 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t197 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t198 = (#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t199 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t200 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#53#isSet ?{dynamic} #0#53{dynamic} : let final core::bool #t201 = #0#53#isSet = true in #0#53 = (#0#47#isSet ?{core::List<dynamic>} #0#47{core::List<dynamic>} : let final core::bool #t202 = #0#47#isSet = true in #0#47 = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool}))) {
           #t162 = 10;
           break #L2;
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool* #t203 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t204 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool* #t205 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool* #t206 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t207 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t208 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t209 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t210 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t211 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t212 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool* #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t216 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t217 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t218 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool* #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool* #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool* #t223 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t224 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+        if(#0#0 is core::List<dynamic> && (#0#38#isSet ?{core::bool} #0#38{core::bool} : let final core::bool #t203 = #0#38#isSet = true in #0#38 = (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t204 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#30#isSet ?{dynamic} #0#30{dynamic} : let final core::bool #t205 = #0#30#isSet = true in #0#30 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#32#isSet ?{dynamic} #0#32{dynamic} : let final core::bool #t206 = #0#32#isSet = true in #0#32 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t207 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t208 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C7 && (let final core::int #t209 = (#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t210 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t211 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t212 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int in ((#0#61#isSet ?{dynamic} #0#61{dynamic} : let final core::bool #t213 = #0#61#isSet = true in #0#61 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t214 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t215 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic}) as core::int).{core::num::<}(#C1){(core::num) → core::bool}) && (let final core::int #t216 = (#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t217 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t218 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t219 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int in ((#0#64#isSet ?{dynamic} #0#64{dynamic} : let final core::bool #t220 = #0#64#isSet = true in #0#64 = (#0#58#isSet ?{core::List<dynamic>} #0#58{core::List<dynamic>} : let final core::bool #t221 = #0#58#isSet = true in #0#58 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t222 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(1){(core::int) → dynamic}) as core::int).{core::num::>}(#C7){(core::num) → core::bool})) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#43#isSet ?{dynamic} #0#43{dynamic} : let final core::bool #t223 = #0#43#isSet = true in #0#43 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t224 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
           #t162 = 11;
           break #L2;
         }
       }
       {
-        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t225 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
+        if(#0#0 is self::Class && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t225 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int})) {
           #t162 = 12;
           break #L2;
         }
@@ -816,7 +816,7 @@
         }
       }
       {
-        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool* #t226 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
+        if(#0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#69#isSet ?{core::int} #0#69{core::int} : let final core::bool #t226 = #0#69#isSet = true in #0#69 = #0#0{self::Class}.{self::Class::field}{core::int}) && #C8 =={core::num::==}{(core::Object) → core::bool} #0#0{self::Class}.{self::Class::getter}{core::int}) {
           #t162 = 14;
           break #L2;
         }
@@ -846,7 +846,7 @@
         }
       }
       {
-        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool* #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
+        if(#0#0 is core::List<dynamic> && (#0#26#isSet ?{core::int} #0#26{core::int} : let final core::bool #t227 = #0#26#isSet = true in #0#26 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) {
           #t162 = 19;
           break #L2;
         }
@@ -885,8 +885,8 @@
       }
       {
         hoisted core::int b;
-        if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t228 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
-          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool* #t229 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
+        if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t228 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int) {
+          b = (#0#98#isSet ?{dynamic} #0#98{dynamic} : let final core::bool #t229 = #0#98#isSet = true in #0#98 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int;
           #t162 = 25;
           break #L2;
         }
@@ -899,8 +899,8 @@
       }
       {
         hoisted dynamic c;
-        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool* #t230 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
-          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool* #t231 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
+        if(#0#0 is ({a: core::Object?, b: core::Object?}) && #C12 =={core::num::==}{(core::Object) → core::bool} (#0#20#isSet ?{core::Object?} #0#20{core::Object?} : let final core::bool #t230 = #0#20#isSet = true in #0#20 = #0#0{({a: core::Object?, b: core::Object?})}.a{core::Object?})) {
+          c = #0#23#isSet ?{core::Object?} #0#23{core::Object?} : let final core::bool #t231 = #0#23#isSet = true in #0#23 = #0#0{({a: core::Object?, b: core::Object?})}.b{core::Object?};
           #t162 = 27;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
index 7c42217..8e3f3e7 100644
--- a/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/caching_constants.dart.strong.transformed.expect
@@ -225,14 +225,14 @@
     synthesized core::bool #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if((!((#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool* #t28 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?}) == null) || null is core::String? && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t29 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && #C5 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool* #t30 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
+      if((!((#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t28 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?}) == null) || null is core::String? && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t29 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && #C5 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t30 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
         {
           return 0;
         }
       }
     }
     {
-      if((!((#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool* #t31 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?}) == null) || null is core::String? && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t32 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool* #t33 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
+      if((!((#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t31 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?}) == null) || null is core::String? && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t32 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t33 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
         {
           return 1;
         }
diff --git a/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect
index 4a33ec8..e5be001 100644
--- a/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/caching_constants.dart.weak.transformed.expect
@@ -225,14 +225,14 @@
     synthesized core::String? #0#3;
     synthesized core::bool #0#3#isSet = false;
     {
-      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t21 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool* #t22 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
+      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t21 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t22 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
         {
           return 0;
         }
       }
     }
     {
-      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t23 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool* #t24 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
+      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::String?} #0#3{core::String?} : let final core::bool #t24 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C4){(core::Object?) → core::String?})) {
         {
           return 1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect
index 78ab03c..54fc1be 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     synthesized core::int? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is self::C && (let final core::int #t1 = let core::int? #t2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int} in #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t4 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t4 == null ?{core::int} #t4 as core::int : #t4{core::int}))) {
+      if(#0#0 is self::C && (let final core::int #t1 = let core::int? #t2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int} in #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t4 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t4 == null ?{core::int} #t4 as core::int : #t4{core::int}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect
index 9d400aa..e33f622 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
     synthesized core::int? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is self::C && (let final core::int #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int)) {
+      if(#0#0 is self::C && (let final core::int #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index 5850797..fc50a3d 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int f;
-      if(#0#0 is self::C && (let final core::int #t1 = let core::int? #t2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int} in let final core::int #t4 = f = let core::int? #t5 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int} in true)) {
+      if(#0#0 is self::C && (let final core::int #t1 = let core::int? #t2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t2 == null ?{core::int} #t2 as core::int : #t2{core::int} in let final core::int #t4 = f = let core::int? #t5 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int} in true)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index ae9ea2f..aced95f 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int f;
-      if(#0#0 is self::C && (let final core::int #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in let final core::int #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in true)) {
+      if(#0#0 is self::C && (let final core::int #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in let final core::int #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in true)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.strong.transformed.expect
index 53cb02f..b800e04 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.strong.transformed.expect
@@ -23,8 +23,8 @@
     {
       hoisted core::String y;
       if(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) {
-        (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool* #t1 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
-        y = (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool* #t2 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
+        (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool #t1 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
+        y = (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool #t2 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
         {
           return 1;
         }
@@ -37,7 +37,7 @@
     synthesized core::bool #2#6#isSet = false;
     {
       hoisted core::bool y;
-      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && (let final core::List<core::bool> #t3 = (#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t4 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool> in ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t5 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::bool #t6 = y = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::[]}(0){(core::int) → core::bool} in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
+      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && (let final core::List<core::bool> #t3 = (#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t4 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool> in ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t5 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::bool #t6 = y = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::[]}(0){(core::int) → core::bool} in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
         return 2;
       }
     }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.weak.transformed.expect
index 53cb02f..b800e04 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_if_case.dart.weak.transformed.expect
@@ -23,8 +23,8 @@
     {
       hoisted core::String y;
       if(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) {
-        (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool* #t1 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
-        y = (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool* #t2 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
+        (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool #t1 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
+        y = (#1#6#isSet ?{dynamic} #1#6{dynamic} : let final core::bool #t2 = #1#6#isSet = true in #1#6 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::String;
         {
           return 1;
         }
@@ -37,7 +37,7 @@
     synthesized core::bool #2#6#isSet = false;
     {
       hoisted core::bool y;
-      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && (let final core::List<core::bool> #t3 = (#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t4 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool> in ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t5 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::bool #t6 = y = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::[]}(0){(core::int) → core::bool} in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
+      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && (let final core::List<core::bool> #t3 = (#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t4 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool> in ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t5 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::bool #t6 = y = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::List<core::bool>).{core::List::[]}(0){(core::int) → core::bool} in true)) && #C3 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
         return 2;
       }
     }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.strong.transformed.expect
index 4ea92a3..60eeb1e 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int)) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.weak.transformed.expect
index 4ea92a3..60eeb1e 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_list_pattern.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int)) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.strong.transformed.expect
index 3eb09fe..495eab8 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.weak.transformed.expect
index 08295d0..802649d 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_map_pattern.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final core::int #t1 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as core::int)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
index d117067..0852681 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int n;
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in let final core::int #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in let final core::int #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
index d117067..0852681 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int n;
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in let final core::int #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in let final core::int #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.strong.transformed.expect
index 389768f..80d79c2 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.weak.transformed.expect
index 389768f..80d79c2 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_named.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.strong.transformed.expect
index b4af1e0..bb7f97b 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, core::Object?) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
+      if(#0#0 is (core::Object?, core::Object?) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.weak.transformed.expect
index b4af1e0..bb7f97b 100644
--- a/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/cast_inside_record_pattern_unnamed.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, core::Object?) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
+      if(#0#0 is (core::Object?, core::Object?) && (let final core::int #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) as core::int) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.strong.transformed.expect
index 04c732b..3c17d6a 100644
--- a/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t8 = i;
diff --git a/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.weak.transformed.expect
index 04c732b..3c17d6a 100644
--- a/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/collections_entry_to_element_conversion_in_inference.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t8 = i;
diff --git a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect
index 98f81e5..e0de43d 100644
--- a/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/const_patterns.dart.strong.transformed.expect
@@ -390,9 +390,9 @@
       synthesized core::bool #2#89#isSet = false;
       {
         hoisted void fun;
-        if((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t1 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool* #t2 = #2#4#isSet = true in #2#4 = #2#0 == null) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:26:12: Error: Method invocation is not a constant expression.
+        if((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t1 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool #t2 = #2#4#isSet = true in #2#4 = #2#0 == null) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:26:12: Error: Method invocation is not a constant expression.
       case super(): // Error
-           ^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t3 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t4 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C5 =={core::num::==}{(core::Object) → core::bool} #2#0 || #C6 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool* #t5 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C8 =={core::String::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t6 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t7 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool* #t8 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t9 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t10 = #2#0! in !(#2#0! == null) && (#2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool* #t11 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || !(#2#0 == null) && (let final dynamic #t12 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool* #t13 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t14 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool* #t15 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t16 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || !(#2#0 == null) && (let final dynamic #t17 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool* #t18 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t19 = #2#0! in !(#2#0! == null) && (#2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool* #t20 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || (let final core::int #t21 = #2#0 as core::int in #C3 =={core::num::==}{(core::Object) → core::bool} #2#0 as core::int) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t22 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t23 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t24 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C10 =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t25 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t26 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool* #t27 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool* #t28 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C13 =={core::num::==}{(core::Object) → core::bool} #2#0 || #2#0{core::int} is void && (let final core::int #t29 = fun = #2#0{core::int} in true)) {
+           ^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t3 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t4 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C5 =={core::num::==}{(core::Object) → core::bool} #2#0 || #C6 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool #t5 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C8 =={core::String::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t6 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t7 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool #t8 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t9 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t10 = #2#0! in !(#2#0! == null) && (#2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool #t11 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || !(#2#0 == null) && (let final dynamic #t12 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool #t13 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t14 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool #t15 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t16 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || !(#2#0 == null) && (let final dynamic #t17 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool #t18 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t19 = #2#0! in !(#2#0! == null) && (#2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool #t20 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || (let final core::int #t21 = #2#0 as core::int in #C3 =={core::num::==}{(core::Object) → core::bool} #2#0 as core::int) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t22 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t23 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t24 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C10 =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t25 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t26 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool #t27 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool #t28 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C13 =={core::num::==}{(core::Object) → core::bool} #2#0 || #2#0{core::int} is void && (let final core::int #t29 = fun = #2#0{core::int} in true)) {
           {
             () → Null {};
             invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:52:25: Error: This couldn't be parsed.
@@ -405,13 +405,13 @@
       {
         if(invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:53:12: Error: `assert` can't be used as an expression.
       case assert(false): // Error
-           ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t30 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool* #t31 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:58:14: Error: Not a constant expression.
+           ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t30 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool #t31 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:58:14: Error: Not a constant expression.
       case ++variable: // Error
-             ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t32 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t33 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C15 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t34 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool* #t35 = #2#4#isSet = true in #2#4 = #2#0 == null) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t36 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool* #t37 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C16 =={core::Symbol::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t38 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t39 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t40 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t41 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool* #t42 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool* #t43 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:74:18: Error: `assert` can't be used as an expression.
+             ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t32 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t33 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C15 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t34 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool #t35 = #2#4#isSet = true in #2#4 = #2#0 == null) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t36 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool #t37 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C16 =={core::Symbol::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t38 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t39 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t40 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t41 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool #t42 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool #t43 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:74:18: Error: `assert` can't be used as an expression.
       case const assert(false): // Error
-                 ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t44 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool* #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression.
+                 ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t44 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression.
       case const ++variable: // Error
-                   ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool* #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool* #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool* #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool* #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool* #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool* #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool* #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool* #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool* #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool* #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool* #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t71 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t72 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool* #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) {
+                   ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t71 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t72 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) {
           {
             core::print(0);
           }
diff --git a/pkg/front_end/testcases/patterns/const_patterns.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/const_patterns.dart.weak.transformed.expect
index f124197..df909d3 100644
--- a/pkg/front_end/testcases/patterns/const_patterns.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/const_patterns.dart.weak.transformed.expect
@@ -390,9 +390,9 @@
       synthesized core::bool #2#89#isSet = false;
       {
         hoisted void fun;
-        if((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t1 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool* #t2 = #2#4#isSet = true in #2#4 = #2#0 == null) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:26:12: Error: Method invocation is not a constant expression.
+        if((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t1 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool #t2 = #2#4#isSet = true in #2#4 = #2#0 == null) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:26:12: Error: Method invocation is not a constant expression.
       case super(): // Error
-           ^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t3 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t4 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C5 =={core::num::==}{(core::Object) → core::bool} #2#0 || #C6 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool* #t5 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C8 =={core::String::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t6 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t7 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool* #t8 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t9 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t10 = #2#0! in !(#2#0! == null) && (#2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool* #t11 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || !(#2#0 == null) && (let final dynamic #t12 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool* #t13 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t14 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool* #t15 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t16 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || !(#2#0 == null) && (let final dynamic #t17 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool* #t18 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t19 = #2#0! in !(#2#0! == null) && (#2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool* #t20 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || (let final core::int #t21 = #2#0 as core::int in #C3 =={core::num::==}{(core::Object) → core::bool} #2#0 as core::int) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t22 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t23 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t24 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C10 =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t25 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t26 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool* #t27 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool* #t28 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C13 =={core::num::==}{(core::Object) → core::bool} #2#0 || #2#0{core::int} is void && (let final core::int #t29 = fun = #2#0{core::int} in true)) {
+           ^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t3 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t4 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C5 =={core::num::==}{(core::Object) → core::bool} #2#0 || #C6 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool #t5 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C8 =={core::String::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t6 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t7 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool #t8 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t9 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (let final dynamic #t10 = #2#0! in !(#2#0! == null) && (#2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool #t11 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || !(#2#0 == null) && (let final dynamic #t12 = #2#0! in #2#24#isSet ?{core::bool} #2#24{core::bool} : let final core::bool #t13 = #2#24#isSet = true in #2#24 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t14 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool #t15 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || !(#2#0 == null) && (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t16 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || !(#2#0 == null) && (let final dynamic #t17 = #2#0! in #2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool #t18 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!) || (let final dynamic #t19 = #2#0! in !(#2#0! == null) && (#2#27#isSet ?{core::bool} #2#27{core::bool} : let final core::bool #t20 = #2#27#isSet = true in #2#27 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0!)) || (let final core::int #t21 = #2#0 as core::int in #C3 =={core::num::==}{(core::Object) → core::bool} #2#0 as core::int) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t22 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t23 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t24 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C10 =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t25 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t26 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool #t27 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool #t28 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || #C13 =={core::num::==}{(core::Object) → core::bool} #2#0 || #2#0{core::int} is void && (let final core::int #t29 = fun = #2#0{core::int} in true)) {
           {
             () → Null {};
             invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:52:25: Error: This couldn't be parsed.
@@ -405,13 +405,13 @@
       {
         if(invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:53:12: Error: `assert` can't be used as an expression.
       case assert(false): // Error
-           ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t30 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool* #t31 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:58:14: Error: Not a constant expression.
+           ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t30 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool #t31 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:58:14: Error: Not a constant expression.
       case ++variable: // Error
-             ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t32 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t33 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C15 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t34 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool* #t35 = #2#4#isSet = true in #2#4 = #2#0 == null) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t36 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool* #t37 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C16 =={core::Symbol::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t38 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool* #t39 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t40 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t41 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool* #t42 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool* #t43 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:74:18: Error: `assert` can't be used as an expression.
+             ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t32 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t33 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C15 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t34 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#4#isSet ?{core::bool} #2#4{core::bool} : let final core::bool #t35 = #2#4#isSet = true in #2#4 = #2#0 == null) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t36 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#20#isSet ?{core::bool} #2#20{core::bool} : let final core::bool #t37 = #2#20#isSet = true in #2#20 = #C7 =={core::String::==}{(core::Object) → core::bool} #2#0) || #C16 =={core::Symbol::==}{(core::Object) → core::bool} #2#0 || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t38 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#31#isSet ?{core::bool} #2#31{core::bool} : let final core::bool #t39 = #2#31#isSet = true in #2#31 = #C9 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t40 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t41 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#35#isSet ?{core::bool} #2#35{core::bool} : let final core::bool #t42 = #2#35#isSet = true in #2#35 = #C11 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool #t43 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:74:18: Error: `assert` can't be used as an expression.
       case const assert(false): // Error
-                 ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t44 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool* #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression.
+                 ^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "Not a constant expression." =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t44 = #2#2#isSet = true in #2#2 = #C2 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool #t45 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || invalid-expression "pkg/front_end/testcases/patterns/const_patterns.dart:79:20: Error: Not a constant expression.
       case const ++variable: // Error
-                   ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool* #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool* #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool* #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool* #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool* #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool* #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool* #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool* #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool* #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool* #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool* #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool* #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool* #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool* #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool* #t71 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool* #t72 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool* #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool* #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool* #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) {
+                   ^^^^^^^^" =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t46 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t47 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t48 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t49 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t50 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t51 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t52 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t53 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool #t54 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool #t55 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool #t56 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool #t57 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t58 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#65#isSet ?{core::bool} #2#65{core::bool} : let final core::bool #t59 = #2#65#isSet = true in #2#65 = #C17 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t60 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#67#isSet ?{core::bool} #2#67{core::bool} : let final core::bool #t61 = #2#67#isSet = true in #2#67 = #C18 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t62 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#69#isSet ?{core::bool} #2#69{core::bool} : let final core::bool #t63 = #2#69#isSet = true in #2#69 = #C19 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#71#isSet ?{core::bool} #2#71{core::bool} : let final core::bool #t64 = #2#71#isSet = true in #2#71 = #C20 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#73#isSet ?{core::bool} #2#73{core::bool} : let final core::bool #t65 = #2#73#isSet = true in #2#73 = #C21 =={core::List::==}{(core::Object) → core::bool} #2#0) || (#2#75#isSet ?{core::bool} #2#75{core::bool} : let final core::bool #t66 = #2#75#isSet = true in #2#75 = #C22 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#77#isSet ?{core::bool} #2#77{core::bool} : let final core::bool #t67 = #2#77#isSet = true in #2#77 = #C23 =={core::Object::==}{(core::Object) → core::bool} #2#0) || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || invalid-expression "New expression is not a constant expression." =={core::Object::==}{(core::Object) → core::bool} #2#0 || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool #t68 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#83#isSet ?{core::bool} #2#83{core::bool} : let final core::bool #t69 = #2#83#isSet = true in #2#83 = #C24 =={core::Object::==}{(core::Object) → core::bool} #2#0) || #C25 =={core::num::==}{(core::Object) → core::bool} #2#0 || (#2#47#isSet ?{core::bool} #2#47{core::bool} : let final core::bool #t70 = #2#47#isSet = true in #2#47 = #C14 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#12#isSet ?{core::bool} #2#12{core::bool} : let final core::bool #t71 = #2#12#isSet = true in #2#12 = #C3 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#14#isSet ?{core::bool} #2#14{core::bool} : let final core::bool #t72 = #2#14#isSet = true in #2#14 = #C4 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#37#isSet ?{core::bool} #2#37{core::bool} : let final core::bool #t73 = #2#37#isSet = true in #2#37 = #C12 =={core::num::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t74 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t75 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t76 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t77 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t78 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t79 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t80 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#87#isSet ?{core::bool} #2#87{core::bool} : let final core::bool #t81 = #2#87#isSet = true in #2#87 = #C26 =={core::Type::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t82 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0) || (#2#89#isSet ?{core::bool} #2#89{core::bool} : let final core::bool #t83 = #2#89#isSet = true in #2#89 = #C28 =={core::Object::==}{(core::Object) → core::bool} #2#0)) {
           {
             core::print(0);
           }
diff --git a/pkg/front_end/testcases/patterns/const_patterns_binary.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/const_patterns_binary.dart.strong.transformed.expect
index 53c8bb5..e0bb4ae 100644
--- a/pkg/front_end/testcases/patterns/const_patterns_binary.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/const_patterns_binary.dart.strong.transformed.expect
@@ -291,7 +291,7 @@
     case --o: // Error
            ^";
     {
-      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t5 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || #C3 =={core::Object::==}{(core::Object) → core::bool} #0#0 || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t7 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t8 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool* #t10 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t11 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t13 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t14 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t15 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t16 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t17 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t18 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t19 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t20 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t21 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool* #t22 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t23 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t24 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t25 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t26 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t27 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final self::method::T% #t28 = #0#0 as self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final core::int #t29 = #0#0 as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as core::int) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t30 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t31 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t32 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool* #t33 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t34 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t35 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t36 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t37 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t38 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t39 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t40 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t41 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t42 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t43 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t44 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool* #t45 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t46 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t47 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t48 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t49 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (let final core::List<self::method::T%> #t50 = #0#0 as core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as core::List<self::method::T%>) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t51 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t52 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t53 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool* #t54 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t55 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t56 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t57 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t58 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t59 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t60 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t61 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t62 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t63 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t64 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t65 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool* #t66 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t67 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t68 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t69 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t70 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0)) {
+      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t5 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || #C3 =={core::Object::==}{(core::Object) → core::bool} #0#0 || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t7 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t8 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool #t10 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t11 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t13 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t14 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t15 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t16 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t17 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t18 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t19 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t20 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t21 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool #t22 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t23 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t24 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t25 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t26 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t27 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final self::method::T% #t28 = #0#0 as self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final core::int #t29 = #0#0 as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as core::int) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t30 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t31 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t32 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool #t33 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t34 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t35 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t36 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t37 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t38 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t39 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t40 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t41 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t42 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t43 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t44 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool #t45 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t46 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t47 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t48 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t49 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (let final core::List<self::method::T%> #t50 = #0#0 as core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as core::List<self::method::T%>) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t51 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t52 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t53 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool #t54 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t55 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t56 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t57 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t58 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t59 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t60 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t61 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t62 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t63 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t64 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t65 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool #t66 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t67 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t68 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t69 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t70 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0)) {
         {
           let final invalid-type #t71 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
     case 1 ?? 2: // Error
diff --git a/pkg/front_end/testcases/patterns/const_patterns_binary.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/const_patterns_binary.dart.weak.transformed.expect
index 88d8c1f..63c2ab1 100644
--- a/pkg/front_end/testcases/patterns/const_patterns_binary.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/const_patterns_binary.dart.weak.transformed.expect
@@ -291,7 +291,7 @@
     case --o: // Error
            ^";
     {
-      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t5 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || #C3 =={core::Object::==}{(core::Object) → core::bool} #0#0 || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t7 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t8 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool* #t10 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t11 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t13 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t14 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t15 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t16 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t17 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t18 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t19 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t20 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t21 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool* #t22 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t23 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t24 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t25 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t26 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t27 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final self::method::T% #t28 = #0#0 as self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final core::int #t29 = #0#0 as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as core::int) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t30 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t31 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t32 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool* #t33 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t34 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t35 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t36 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t37 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t38 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t39 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t40 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t41 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t42 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t43 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t44 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool* #t45 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t46 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t47 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t48 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t49 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (let final core::List<self::method::T%> #t50 = #0#0 as core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as core::List<self::method::T%>) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t51 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t52 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t53 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool* #t54 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t55 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t56 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t57 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t58 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t59 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t60 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool* #t61 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t62 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool* #t63 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t64 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool* #t65 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool* #t66 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t67 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t68 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t69 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t70 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0)) {
+      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t5 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || #C3 =={core::Object::==}{(core::Object) → core::bool} #0#0 || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t7 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t8 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool #t10 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t11 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t13 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t14 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t15 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t16 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t17 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t18 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t19 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t20 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t21 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool #t22 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t23 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t24 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t25 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (let final self::method::T% #t26 = #0#0 as self::method::T% in #0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t27 = #0#6#isSet = true in #0#6 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final self::method::T% #t28 = #0#0 as self::method::T% in #C1 =={core::num::==}{(core::Object) → core::bool} #0#0 as self::method::T%) || (let final core::int #t29 = #0#0 as core::int in #C2 =={core::num::==}{(core::Object) → core::bool} #0#0 as core::int) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t30 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t31 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t32 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool #t33 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t34 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t35 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t36 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t37 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t38 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t39 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t40 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t41 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t42 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t43 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t44 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool #t45 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t46 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t47 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t48 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t49 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (let final core::List<self::method::T%> #t50 = #0#0 as core::List<self::method::T%> in #C12 =={core::List::==}{(core::Object) → core::bool} #0#0 as core::List<self::method::T%>) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t51 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t52 = #0#12#isSet = true in #0#12 = #C5 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t53 = #0#4#isSet = true in #0#4 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#14#isSet ?{core::bool} #0#14{core::bool} : let final core::bool #t54 = #0#14#isSet = true in #0#14 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t55 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t56 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t57 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t58 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t59 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t60 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#10#isSet ?{core::bool} #0#10{core::bool} : let final core::bool #t61 = #0#10#isSet = true in #0#10 = #C4 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t62 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#20#isSet ?{core::bool} #0#20{core::bool} : let final core::bool #t63 = #0#20#isSet = true in #0#20 = #C9 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t64 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#18#isSet ?{core::bool} #0#18{core::bool} : let final core::bool #t65 = #0#18#isSet = true in #0#18 = #C8 =={core::Object::==}{(core::Object) → core::bool} #0#0) || (#0#22#isSet ?{core::bool} #0#22{core::bool} : let final core::bool #t66 = #0#22#isSet = true in #0#22 = #C10 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t67 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t68 = #0#16#isSet = true in #0#16 = #C7 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t69 = #0#24#isSet = true in #0#24 = #C11 =={core::num::==}{(core::Object) → core::bool} #0#0) || (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t70 = #0#2#isSet = true in #0#2 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0)) {
         {
           let final invalid-type #t71 = invalid-expression "pkg/front_end/testcases/patterns/const_patterns_binary.dart:81:12: Error: This couldn't be parsed.
     case 1 ?? 2: // Error
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.strong.transformed.expect
index 5198d46..decd196 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.strong.transformed.expect
@@ -161,7 +161,7 @@
       }
       {
         hoisted core::bool isEven;
-        if(let final core::int #t10 = #0#0 as core::int in (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t11 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool}) is core::bool && (let final core::bool #t12 = isEven = #0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool} in true)) {
+        if(let final core::int #t10 = #0#0 as core::int in (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t11 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool}) is core::bool && (let final core::bool #t12 = isEven = #0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool} in true)) {
           #t9 = "${isEven}";
           break #L5;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.weak.transformed.expect
index cdbb1a3..c74b284 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/casts.dart.weak.transformed.expect
@@ -166,7 +166,7 @@
       }
       {
         hoisted core::bool isEven;
-        if(let final core::int #t10 = #0#0 as core::int in (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t11 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool}) is core::bool && (let final core::bool #t12 = isEven = #0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool} in true)) {
+        if(let final core::int #t10 = #0#0 as core::int in (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t11 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool}) is core::bool && (let final core::bool #t12 = isEven = #0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = (#0#0 as core::int).{core::int::isEven}{core::bool} in true)) {
           #t9 = "${isEven}";
           break #L5;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.strong.transformed.expect
index 10d7c9a..4309789 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.strong.transformed.expect
@@ -75,16 +75,16 @@
     {
       {
         hoisted (core::int) → void member;
-        if(#0#0 is self::A<core::int> && (#0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>})) is (core::int) → void) {
-          member = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>});
+        if(#0#0 is self::A<core::int> && (#0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>})) is (core::int) → void) {
+          member = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>});
           #t2 = 0;
           break #L2;
         }
       }
       {
         hoisted (core::num) → void member;
-        if((#0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
-          member = #0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool* #t6 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0);
+        if((#0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
+          member = #0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool #t6 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0);
           #t2 = 1;
           break #L2;
         }
@@ -125,8 +125,8 @@
     {
       {
         hoisted (core::num) → void member;
-        if((#0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
-          member = #0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0);
+        if((#0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
+          member = #0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0);
           #t8 = 1;
           break #L4;
         }
@@ -152,7 +152,7 @@
       lowered hoisted (core::double) → void member2#case#0;
       lowered hoisted (core::int) → void member1#case#1;
       lowered hoisted (core::num) → void member2#case#1;
-      if(#0#0 is self::A<core::int> && (let final (core::int) → void #t11 = member1#case#0 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (#0#0{self::A<core::int>} is self::A<core::double> && (let final (core::double) → void #t13 = member2#case#0 = self::_extension#1|get#member<core::double>(#0#0{self::A<core::double>}) in true)) || #0#0 is self::A<core::int> && (let final (core::int) → void #t14 = member1#case#1 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t15 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (let final (core::num) → void #t16 = member2#case#1 = self::_extension#1|get#member<core::num>(#0#0{self::A<core::int>}) in true)) {
+      if(#0#0 is self::A<core::int> && (let final (core::int) → void #t11 = member1#case#0 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (#0#0{self::A<core::int>} is self::A<core::double> && (let final (core::double) → void #t13 = member2#case#0 = self::_extension#1|get#member<core::double>(#0#0{self::A<core::double>}) in true)) || #0#0 is self::A<core::int> && (let final (core::int) → void #t14 = member1#case#1 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t15 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (let final (core::num) → void #t16 = member2#case#1 = self::_extension#1|get#member<core::num>(#0#0{self::A<core::int>}) in true)) {
       }
     }
   }
@@ -167,16 +167,16 @@
     {
       {
         hoisted core::int member;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t18 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t19 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t18 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t19 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
           #t17 = member;
           break #L6;
         }
       }
       {
         hoisted core::double member;
-        if(#0#0 is self::J<core::num> && (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t20 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) is core::double) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t21 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) as{Unchecked} core::double;
+        if(#0#0 is self::J<core::num> && (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t20 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) is core::double) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t21 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) as{Unchecked} core::double;
           #t17 = member;
           break #L6;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.weak.transformed.expect
index 2fe8be9..969f70b2 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart.weak.transformed.expect
@@ -77,16 +77,16 @@
     {
       {
         hoisted (core::int) → void member;
-        if(#0#0 is self::A<core::int> && (#0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>})) is (core::int) → void) {
-          member = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>});
+        if(#0#0 is self::A<core::int> && (#0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>})) is (core::int) → void) {
+          member = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>});
           #t2 = 0;
           break #L2;
         }
       }
       {
         hoisted (core::num) → void member;
-        if((#0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
-          member = #0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool* #t6 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0);
+        if((#0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
+          member = #0#3#isSet ?{(core::num) → void} #0#3{(core::num) → void} : let final core::bool #t6 = #0#3#isSet = true in #0#3 = self::_extension#1|get#member<core::num>(#0#0);
           #t2 = 1;
           break #L2;
         }
@@ -129,8 +129,8 @@
     {
       {
         hoisted (core::num) → void member;
-        if((#0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
-          member = #0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0);
+        if((#0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0)) is (core::num) → void) {
+          member = #0#1#isSet ?{(core::num) → void} #0#1{(core::num) → void} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = self::_extension#1|get#member<core::num>(#0#0);
           #t8 = 1;
           break #L4;
         }
@@ -157,7 +157,7 @@
       lowered hoisted (core::double) → void member2#case#0;
       lowered hoisted (core::int) → void member1#case#1;
       lowered hoisted (core::num) → void member2#case#1;
-      if(#0#0 is self::A<core::int> && (let final (core::int) → void #t11 = member1#case#0 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (#0#0{self::A<core::int>} is self::A<core::double> && (let final (core::double) → void #t13 = member2#case#0 = self::_extension#1|get#member<core::double>(#0#0{self::A<core::double>}) in true)) || #0#0 is self::A<core::int> && (let final (core::int) → void #t14 = member1#case#1 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t15 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (let final (core::num) → void #t16 = member2#case#1 = self::_extension#1|get#member<core::num>(#0#0{self::A<core::int>}) in true)) {
+      if(#0#0 is self::A<core::int> && (let final (core::int) → void #t11 = member1#case#0 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (#0#0{self::A<core::int>} is self::A<core::double> && (let final (core::double) → void #t13 = member2#case#0 = self::_extension#1|get#member<core::double>(#0#0{self::A<core::double>}) in true)) || #0#0 is self::A<core::int> && (let final (core::int) → void #t14 = member1#case#1 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t15 = #0#2#isSet = true in #0#2 = self::_extension#1|get#member<core::int>(#0#0{self::A<core::int>}) in true) && (let final (core::num) → void #t16 = member2#case#1 = self::_extension#1|get#member<core::num>(#0#0{self::A<core::int>}) in true)) {
       }
     }
   }
@@ -172,16 +172,16 @@
     {
       {
         hoisted core::int member;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t18 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t19 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t18 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t19 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
           #t17 = member;
           break #L6;
         }
       }
       {
         hoisted core::double member;
-        if(#0#0 is self::J<core::num> && (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t20 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) is core::double) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t21 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) as{Unchecked} core::double;
+        if(#0#0 is self::J<core::num> && (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t20 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) is core::double) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t21 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0{self::J<core::num>})) as{Unchecked} core::double;
           #t17 = member;
           break #L6;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.strong.transformed.expect
index 684e197..7fdf3a9 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.strong.transformed.expect
@@ -25,13 +25,13 @@
     #L2:
     {
       {
-        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t3 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t3 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t2 = 1;
           break #L2;
         }
       }
       {
-        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t4 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t4 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t2 = 2;
           break #L2;
         }
@@ -46,19 +46,19 @@
     #L3:
     {
       {
-        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t6 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t6 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t5 = 1;
           break #L3;
         }
       }
       {
-        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t5 = 2;
           break #L3;
         }
       }
       {
-        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t8 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t8 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t5 = 3;
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.weak.transformed.expect
index f0bb3d7..1be4202 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example0.dart.weak.transformed.expect
@@ -27,13 +27,13 @@
     #L2:
     {
       {
-        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t3 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t3 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t2 = 1;
           break #L2;
         }
       }
       {
-        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t4 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t4 = #1#1#isSet = true in #1#1 = #1#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t2 = 2;
           break #L2;
         }
@@ -49,19 +49,19 @@
     #L3:
     {
       {
-        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t6 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t6 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t5 = 1;
           break #L3;
         }
       }
       {
-        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t5 = 2;
           break #L3;
         }
       }
       {
-        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t8 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t8 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t5 = 3;
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.strong.transformed.expect
index f5271fe..6540d7f 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L1;
         }
@@ -25,7 +25,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t1 = block {
@@ -53,7 +53,7 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t5 = core::_GrowableList::_literal1<core::List<self::perms::A%>>(list);
           break #L2;
         }
@@ -61,7 +61,7 @@
       {
         hoisted self::perms::A% x;
         hoisted core::List<self::perms::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::perms::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::perms::A%>};
           #t5 = block {
@@ -106,19 +106,19 @@
     #L3:
     {
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = true;
           break #L3;
         }
       }
       {
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
       }
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
@@ -128,9 +128,9 @@
         hoisted core::List<self::equals::A%> ls;
         hoisted self::equals::A% r;
         hoisted core::List<self::equals::A%> rs;
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
-          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
-          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
+          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
           #t11 = l =={core::Object::==}{(core::Object) → core::bool} r && self::equals<self::equals::A%>(ls, rs);
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.weak.transformed.expect
index d0aee97..c99ff1a 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example1.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L1;
         }
@@ -26,7 +26,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t1 = block {
@@ -55,7 +55,7 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t5 = core::_GrowableList::_literal1<core::List<self::perms::A%>>(list);
           break #L2;
         }
@@ -63,7 +63,7 @@
       {
         hoisted self::perms::A% x;
         hoisted core::List<self::perms::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::perms::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::perms::A%>};
           #t5 = block {
@@ -109,19 +109,19 @@
     #L3:
     {
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = true;
           break #L3;
         }
       }
       {
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
       }
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
@@ -131,9 +131,9 @@
         hoisted core::List<self::equals::A%> ls;
         hoisted self::equals::A% r;
         hoisted core::List<self::equals::A%> rs;
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
-          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
-          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
+          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
           #t11 = l =={core::Object::==}{(core::Object) → core::bool} r && self::equals<self::equals::A%>(ls, rs);
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.strong.transformed.expect
index 36d4a40..18de7b8 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.strong.transformed.expect
@@ -38,7 +38,7 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t2 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L2;
         }
@@ -46,7 +46,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t2 = block {
@@ -74,7 +74,7 @@
     #L3:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t6 = core::_GrowableList::_literal1<core::List<self::perms::A%>>(list);
           break #L3;
         }
@@ -82,7 +82,7 @@
       {
         hoisted self::perms::A% x;
         hoisted core::List<self::perms::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::perms::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::perms::A%>};
           #t6 = block {
@@ -127,19 +127,19 @@
     #L4:
     {
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t14 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t15 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t16 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t18 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t14 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t15 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t16 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t18 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t12 = true;
           break #L4;
         }
       }
       {
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t19 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t20 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t21 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t22 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t23 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t24 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t19 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t20 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t21 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t22 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t23 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t24 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t12 = false;
           break #L4;
         }
       }
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t25 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t26 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t27 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t28 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t29 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t30 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t25 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t26 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t27 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t28 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t29 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t30 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
           #t12 = false;
           break #L4;
         }
@@ -149,9 +149,9 @@
         hoisted core::List<self::equals::A%> ls;
         hoisted self::equals::A% r;
         hoisted core::List<self::equals::A%> rs;
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t31 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t32 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t33 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t34 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t35 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t36 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t37 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t38 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t39 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
-          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
-          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t42 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t31 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t32 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t33 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t34 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t35 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t36 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t37 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t38 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t39 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
+          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t42 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
           #t12 = l =={core::Object::==}{(core::Object) → core::bool} r && self::equals<self::equals::A%>(ls, rs);
           break #L4;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.weak.transformed.expect
index a742437..b12fbf8 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example2.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t2 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L2;
         }
@@ -48,7 +48,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t2 = block {
@@ -77,7 +77,7 @@
     #L3:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t6 = core::_GrowableList::_literal1<core::List<self::perms::A%>>(list);
           break #L3;
         }
@@ -85,7 +85,7 @@
       {
         hoisted self::perms::A% x;
         hoisted core::List<self::perms::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::perms::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::perms::A%>};
           #t6 = block {
@@ -131,19 +131,19 @@
     #L4:
     {
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t14 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t15 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t16 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t18 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t14 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t15 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t16 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t18 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t12 = true;
           break #L4;
         }
       }
       {
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t19 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t20 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t21 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t22 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t23 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t24 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t19 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t20 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t21 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t22 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t23 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t24 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t12 = false;
           break #L4;
         }
       }
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t25 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t26 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t27 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t28 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t29 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t30 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t25 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t26 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t27 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t28 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t29 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t30 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
           #t12 = false;
           break #L4;
         }
@@ -153,9 +153,9 @@
         hoisted core::List<self::equals::A%> ls;
         hoisted self::equals::A% r;
         hoisted core::List<self::equals::A%> rs;
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t31 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t32 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t33 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t34 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t35 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t36 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t37 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t38 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t39 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
-          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
-          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t42 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t31 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t32 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t33 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t34 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t35 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t36 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t37 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t38 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t39 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
+          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t42 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
           #t12 = l =={core::Object::==}{(core::Object) → core::bool} r && self::equals<self::equals::A%>(ls, rs);
           break #L4;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.strong.transformed.expect
index b49288f..d4b7748 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L1;
         }
@@ -23,7 +23,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t1 = block {
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.weak.transformed.expect
index 03b6db5..f55e13f 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example3.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L1;
         }
@@ -24,7 +24,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t1 = block {
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.strong.transformed.expect
index f5271fe..6540d7f 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L1;
         }
@@ -25,7 +25,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t1 = block {
@@ -53,7 +53,7 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t5 = core::_GrowableList::_literal1<core::List<self::perms::A%>>(list);
           break #L2;
         }
@@ -61,7 +61,7 @@
       {
         hoisted self::perms::A% x;
         hoisted core::List<self::perms::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::perms::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::perms::A%>};
           #t5 = block {
@@ -106,19 +106,19 @@
     #L3:
     {
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = true;
           break #L3;
         }
       }
       {
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
       }
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
@@ -128,9 +128,9 @@
         hoisted core::List<self::equals::A%> ls;
         hoisted self::equals::A% r;
         hoisted core::List<self::equals::A%> rs;
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
-          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
-          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
+          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
           #t11 = l =={core::Object::==}{(core::Object) → core::bool} r && self::equals<self::equals::A%>(ls, rs);
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.weak.transformed.expect
index d0aee97..c99ff1a 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/issue2878_example4.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = core::_GrowableList::•<core::List<self::subs::A%>>(0);
           break #L1;
         }
@@ -26,7 +26,7 @@
       {
         hoisted self::subs::A% x;
         hoisted core::List<self::subs::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::subs::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::subs::A%>};
           #t1 = block {
@@ -55,7 +55,7 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool} || (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t5 = core::_GrowableList::_literal1<core::List<self::perms::A%>>(list);
           break #L2;
         }
@@ -63,7 +63,7 @@
       {
         hoisted self::perms::A% x;
         hoisted core::List<self::perms::A%> xs;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::perms::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::perms::A%>};
           #t5 = block {
@@ -109,19 +109,19 @@
     #L3:
     {
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t17 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = true;
           break #L3;
         }
       }
       {
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t18 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t20 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t21 = #0#7#isSet = true in #0#7 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t23 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
       }
       {
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t24 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t26 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t27 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t29 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
           #t11 = false;
           break #L3;
         }
@@ -131,9 +131,9 @@
         hoisted core::List<self::equals::A%> ls;
         hoisted self::equals::A% r;
         hoisted core::List<self::equals::A%> rs;
-        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool* #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool* #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool* #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
-          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
-          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool* #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
+        if((#0#9#isSet ?{core::bool} #0#9{core::bool} : let final core::bool #t30 = #0#9#isSet = true in #0#9 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t32 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (let final self::equals::A% #t33 = l = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t34 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%} in true) && (let final core::List<self::equals::A%> #t35 = ls = (#0#1#isSet ?{core::List<self::equals::A%>} #0#1{core::List<self::equals::A%>} : let final core::bool #t36 = #0#1#isSet = true in #0#1 = #0#0.$1{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>} in true) && (#0#11#isSet ?{core::bool} #0#11{core::bool} : let final core::bool #t37 = #0#11#isSet = true in #0#11 = (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t38 = #0#6#isSet = true in #0#6 = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t39 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool})) {
+          r = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t40 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::[]}(0){(core::int) → self::equals::A%};
+          rs = (#0#5#isSet ?{core::List<self::equals::A%>} #0#5{core::List<self::equals::A%>} : let final core::bool #t41 = #0#5#isSet = true in #0#5 = #0#0.$2{core::List<self::equals::A%>}).{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::equals::A%>};
           #t11 = l =={core::Object::==}{(core::Object) → core::bool} r && self::equals<self::equals::A%>(ls, rs);
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.strong.transformed.expect
index 7ba0a2a..077ad08 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.strong.transformed.expect
@@ -124,13 +124,13 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t2 = 0;
           break #L2;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t2 = 1;
           break #L2;
         }
@@ -146,13 +146,13 @@
     #L3:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t5 = 0;
           break #L3;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t5 = 1;
           break #L3;
         }
@@ -168,19 +168,19 @@
     #L4:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t8 = 0;
           break #L4;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t8 = 1;
           break #L4;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t8 = 2;
           break #L4;
         }
@@ -196,19 +196,19 @@
     #L5:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t12 = 0;
           break #L5;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t12 = 1;
           break #L5;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t15 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t15 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t12 = 2;
           break #L5;
         }
@@ -224,19 +224,19 @@
     #L6:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t17 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t17 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t16 = 0;
           break #L6;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t18 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t18 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t16 = 1;
           break #L6;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t19 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t19 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t16 = 2;
           break #L6;
         }
@@ -280,13 +280,13 @@
     #L9:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t23 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t23 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t22 = 0;
           break #L9;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t24 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t24 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t22 = 2;
           break #L9;
         }
@@ -302,13 +302,13 @@
     #L10:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t26 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t26 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t25 = 0;
           break #L10;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t27 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t27 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t25 = 2;
           break #L10;
         }
@@ -324,13 +324,13 @@
     #L11:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t29 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t29 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t28 = 0;
           break #L11;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t30 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t30 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t28 = 2;
           break #L11;
         }
@@ -360,13 +360,13 @@
     #L13:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t33 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t33 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t32 = 0;
           break #L13;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t34 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t34 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
           #t32 = 1;
           break #L13;
         }
@@ -382,13 +382,13 @@
     #L14:
     {
       {
-        if(#0#0 is core::List<core::int> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t36 = #0#2#isSet = true in #0#2 = #0#0{core::List<core::int>}.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if(#0#0 is core::List<core::int> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t36 = #0#2#isSet = true in #0#2 = #0#0{core::List<core::int>}.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t35 = 0;
           break #L14;
         }
       }
       {
-        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t37 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t37 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t35 = 1;
           break #L14;
         }
@@ -404,13 +404,13 @@
     #L15:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t39 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t39 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t38 = 0;
           break #L15;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t40 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t41 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t40 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t41 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
           #t38 = 1;
           break #L15;
         }
@@ -426,13 +426,13 @@
     #L16:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t43 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t43 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t42 = 0;
           break #L16;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t44 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #0#0.{core::List::sublist}(0, (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t45 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<core::num>} is core::List<core::int>) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t44 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #0#0.{core::List::sublist}(0, (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t45 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<core::num>} is core::List<core::int>) {
           #t42 = 1;
           break #L16;
         }
@@ -448,19 +448,19 @@
     #L17:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t47 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t47 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t46 = 0;
           break #L17;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t48 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t48 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
           #t46 = 1;
           break #L17;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t49 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t49 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t46 = 2;
           break #L17;
         }
@@ -476,19 +476,19 @@
     #L18:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t51 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t51 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t50 = 0;
           break #L18;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t52 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t52 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t50 = 1;
           break #L18;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t53 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t53 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
           #t50 = 2;
           break #L18;
         }
@@ -504,19 +504,19 @@
     #L19:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t55 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t55 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t54 = 0;
           break #L19;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t56 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t56 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t54 = 1;
           break #L19;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t57 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(1){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t57 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(1){(core::int) → core::num}) {
           #t54 = 2;
           break #L19;
         }
@@ -532,19 +532,19 @@
     #L20:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t59 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t59 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t58 = 0;
           break #L20;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t60 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t60 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t58 = 1;
           break #L20;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t61 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t62 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t61 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t62 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
           #t58 = 2;
           break #L20;
         }
@@ -560,19 +560,19 @@
     #L21:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t64 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t64 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t63 = 0;
           break #L21;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t65 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t65 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t63 = 1;
           break #L21;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t66 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t67 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t66 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t67 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → core::num}) {
           #t63 = 2;
           break #L21;
         }
@@ -588,19 +588,19 @@
     #L22:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t69 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t69 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t68 = 0;
           break #L22;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t70 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t70 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t68 = 1;
           break #L22;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t71 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t72 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t71 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t72 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
           #t68 = 2;
           break #L22;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.weak.transformed.expect
index b43fee4..8b5ad12 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/list.dart.weak.transformed.expect
@@ -126,13 +126,13 @@
     #L2:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t2 = 0;
           break #L2;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t2 = 1;
           break #L2;
         }
@@ -149,13 +149,13 @@
     #L3:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t5 = 0;
           break #L3;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t5 = 1;
           break #L3;
         }
@@ -172,19 +172,19 @@
     #L4:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t8 = 0;
           break #L4;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t8 = 1;
           break #L4;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t8 = 2;
           break #L4;
         }
@@ -201,19 +201,19 @@
     #L5:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t12 = 0;
           break #L5;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t12 = 1;
           break #L5;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t15 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t15 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t12 = 2;
           break #L5;
         }
@@ -230,19 +230,19 @@
     #L6:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t17 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t17 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t16 = 0;
           break #L6;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t18 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t18 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t16 = 1;
           break #L6;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t19 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t19 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t16 = 2;
           break #L6;
         }
@@ -289,13 +289,13 @@
     #L9:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t23 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t23 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t22 = 0;
           break #L9;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t24 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t24 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t22 = 2;
           break #L9;
         }
@@ -312,13 +312,13 @@
     #L10:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t26 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t26 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t25 = 0;
           break #L10;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t27 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t27 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t25 = 2;
           break #L10;
         }
@@ -335,13 +335,13 @@
     #L11:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t29 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t29 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t28 = 0;
           break #L11;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t30 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t30 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t28 = 2;
           break #L11;
         }
@@ -373,13 +373,13 @@
     #L13:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t33 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t33 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t32 = 0;
           break #L13;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t34 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t34 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
           #t32 = 1;
           break #L13;
         }
@@ -396,13 +396,13 @@
     #L14:
     {
       {
-        if(#0#0 is core::List<core::int> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t36 = #0#2#isSet = true in #0#2 = #0#0{core::List<core::int>}.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if(#0#0 is core::List<core::int> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t36 = #0#2#isSet = true in #0#2 = #0#0{core::List<core::int>}.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t35 = 0;
           break #L14;
         }
       }
       {
-        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t37 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t37 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           #t35 = 1;
           break #L14;
         }
@@ -419,13 +419,13 @@
     #L15:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t39 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t39 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t38 = 0;
           break #L15;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t40 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t41 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t40 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t41 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
           #t38 = 1;
           break #L15;
         }
@@ -442,13 +442,13 @@
     #L16:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t43 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t43 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t42 = 0;
           break #L16;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t44 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #0#0.{core::List::sublist}(0, (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t45 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<core::num>} is core::List<core::int>) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t44 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #0#0.{core::List::sublist}(0, (#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t45 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<core::num>} is core::List<core::int>) {
           #t42 = 1;
           break #L16;
         }
@@ -465,19 +465,19 @@
     #L17:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t47 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t47 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t46 = 0;
           break #L17;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t48 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t48 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
           #t46 = 1;
           break #L17;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t49 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t49 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool}) {
           #t46 = 2;
           break #L17;
         }
@@ -494,19 +494,19 @@
     #L18:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t51 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t51 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t50 = 0;
           break #L18;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t52 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t52 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t50 = 1;
           break #L18;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t53 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t53 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(0){(core::int) → core::num}) {
           #t50 = 2;
           break #L18;
         }
@@ -523,19 +523,19 @@
     #L19:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t55 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t55 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t54 = 0;
           break #L19;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t56 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t56 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t54 = 1;
           break #L19;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t57 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(1){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t57 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}(1){(core::int) → core::num}) {
           #t54 = 2;
           break #L19;
         }
@@ -552,19 +552,19 @@
     #L20:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t59 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t59 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t58 = 0;
           break #L20;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t60 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t60 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t58 = 1;
           break #L20;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t61 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t62 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t61 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t62 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
           #t58 = 2;
           break #L20;
         }
@@ -581,19 +581,19 @@
     #L21:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t64 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t64 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t63 = 0;
           break #L21;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t65 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t65 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t63 = 1;
           break #L21;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t66 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t67 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t66 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t67 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → core::num}) {
           #t63 = 2;
           break #L21;
         }
@@ -610,19 +610,19 @@
     #L22:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t69 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t69 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t68 = 0;
           break #L22;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t70 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t70 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2) {
           #t68 = 1;
           break #L22;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t71 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t72 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t71 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t72 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::num}) {
           #t68 = 2;
           break #L22;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.strong.transformed.expect
index dd3be54..83b0339 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.strong.transformed.expect
@@ -83,8 +83,8 @@
       {
         hoisted core::int field1;
         hoisted core::num field2;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int}) is core::int && (let final core::int #t8 = field1 = #0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int} in true) && (#0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num}) is core::num) {
-          field2 = #0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool* #t11 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num};
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int}) is core::int && (let final core::int #t8 = field1 = #0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int} in true) && (#0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num}) is core::num) {
+          field2 = #0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool #t11 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num};
           #t6 = 0;
           break #L4;
         }
@@ -115,8 +115,8 @@
     {
       {
         hoisted core::int field2;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) is core::int) {
-          field2 = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t15 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) is core::int) {
+          field2 = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t15 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) as{Unchecked} core::int;
           #t13 = 0;
           break #L6;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.weak.transformed.expect
index 67fcb47..17deb6e 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/object_pattern.dart.weak.transformed.expect
@@ -87,8 +87,8 @@
       {
         hoisted core::int field1;
         hoisted core::num field2;
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int}) is core::int && (let final core::int #t8 = field1 = #0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int} in true) && (#0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num}) is core::num) {
-          field2 = #0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool* #t11 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num};
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int}) is core::int && (let final core::int #t8 = field1 = #0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field1}{core::int} in true) && (#0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num}) is core::num) {
+          field2 = #0#2#isSet ?{core::num} #0#2{core::num} : let final core::bool #t11 = #0#2#isSet = true in #0#2 = #0#0.{self::A::field2}{core::num};
           #t6 = 0;
           break #L4;
         }
@@ -121,8 +121,8 @@
     {
       {
         hoisted core::int field2;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t14 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) is core::int) {
-          field2 = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t15 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t14 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) is core::int) {
+          field2 = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t15 = #0#1#isSet = true in #0#1 = #0#0.{self::A::field2}{core::num}) as{Unchecked} core::int;
           #t13 = 0;
           break #L6;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.strong.transformed.expect
index e70256b..e6baf3e 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.strong.transformed.expect
@@ -57,13 +57,13 @@
     #L3:
     {
       {
-        if(#C1 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
+        if(#C1 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
           #t3 = 0;
           break #L3;
         }
       }
       {
-        if(#C2 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
+        if(#C2 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
           #t3 = 1;
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.weak.transformed.expect
index b2a40ab..c8c5aea 100644
--- a/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/exhaustiveness/record.dart.weak.transformed.expect
@@ -60,13 +60,13 @@
     #L3:
     {
       {
-        if(#C1 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
+        if(#C1 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
           #t3 = 0;
           break #L3;
         }
       }
       {
-        if(#C2 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
+        if(#C2 =={core::Object::==}{(core::Object) → core::bool} (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.named{core::bool})) {
           #t3 = 1;
           break #L3;
         }
diff --git a/pkg/front_end/testcases/patterns/extension_object_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/extension_object_pattern.dart.strong.transformed.expect
index bb242b1..b76efaa 100644
--- a/pkg/front_end/testcases/patterns/extension_object_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extension_object_pattern.dart.strong.transformed.expect
@@ -25,8 +25,8 @@
     {
       {
         hoisted core::num getter;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::num) {
-          getter = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0);
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::num) {
+          getter = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0);
           #t1 = 0;
           break #L1;
         }
@@ -43,8 +43,8 @@
     {
       {
         hoisted core::int getter;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t5 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::int) {
-          getter = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t5 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::int) {
+          getter = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) as{Unchecked} core::int;
           #t4 = 0;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/extension_object_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/extension_object_pattern.dart.weak.transformed.expect
index 35db826..b53ad07 100644
--- a/pkg/front_end/testcases/patterns/extension_object_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/extension_object_pattern.dart.weak.transformed.expect
@@ -26,8 +26,8 @@
     {
       {
         hoisted core::num getter;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::num) {
-          getter = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0);
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::num) {
+          getter = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0);
           #t1 = 0;
           break #L1;
         }
@@ -45,8 +45,8 @@
     {
       {
         hoisted core::int getter;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t5 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::int) {
-          getter = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t5 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) is core::int) {
+          getter = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = self::Extension|get#getter(#0#0)) as{Unchecked} core::int;
           #t4 = 0;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/fields_order.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/fields_order.dart.strong.transformed.expect
index 36e4aab..19a5395 100644
--- a/pkg/front_end/testcases/patterns/fields_order.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/fields_order.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     synthesized core::bool #0#5#isSet = false;
     {
       hoisted core::String y;
-      if(#0#0 is self::A && #C1 =={core::String::==}{(core::Object) → core::bool} #0#0{self::A}.{self::A::foo}{core::String} && (let final core::String #t1 = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t2 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in ((#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t3 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String) is core::String && (let final core::String #t4 = y = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t5 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in true))) {
+      if(#0#0 is self::A && #C1 =={core::String::==}{(core::Object) → core::bool} #0#0{self::A}.{self::A::foo}{core::String} && (let final core::String #t1 = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t2 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in ((#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t3 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String) is core::String && (let final core::String #t4 = y = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t5 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in true))) {
         return y;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/fields_order.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/fields_order.dart.weak.transformed.expect
index 36e4aab..19a5395 100644
--- a/pkg/front_end/testcases/patterns/fields_order.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/fields_order.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     synthesized core::bool #0#5#isSet = false;
     {
       hoisted core::String y;
-      if(#0#0 is self::A && #C1 =={core::String::==}{(core::Object) → core::bool} #0#0{self::A}.{self::A::foo}{core::String} && (let final core::String #t1 = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t2 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in ((#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t3 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String) is core::String && (let final core::String #t4 = y = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t5 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in true))) {
+      if(#0#0 is self::A && #C1 =={core::String::==}{(core::Object) → core::bool} #0#0{self::A}.{self::A::foo}{core::String} && (let final core::String #t1 = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t2 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in ((#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t3 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String) is core::String && (let final core::String #t4 = y = (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t5 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::bar}{core::Object?}) as core::String in true))) {
         return y;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/final_joint_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/final_joint_variables.dart.strong.transformed.expect
index 39de1b7..0ba9d6c3 100644
--- a/pkg/front_end/testcases/patterns/final_joint_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/final_joint_variables.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
     {
       lowered final hoisted core::int a#case#0;
       lowered final hoisted core::int a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::int && (let final core::int #t7 = a#case#1 = #0#0{core::int} in true) && (let final core::int #t8 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::int && (let final core::int #t7 = a#case#1 = #0#0{core::int} in true) && (let final core::int #t8 = #t1 = a#case#1 in true)) {
         final core::int a = #t1{core::int};
         {
           return a;
@@ -23,7 +23,7 @@
     }
     {
       final hoisted core::String a;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t11 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) || #0#0 is core::String && (let final core::String #t13 = a = #0#0{core::String} in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t11 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) || #0#0 is core::String && (let final core::String #t13 = a = #0#0{core::String} in true)) {
         {
           return a;
         }
diff --git a/pkg/front_end/testcases/patterns/final_joint_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/final_joint_variables.dart.weak.transformed.expect
index 39de1b7..0ba9d6c3 100644
--- a/pkg/front_end/testcases/patterns/final_joint_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/final_joint_variables.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
     {
       lowered final hoisted core::int a#case#0;
       lowered final hoisted core::int a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::int && (let final core::int #t7 = a#case#1 = #0#0{core::int} in true) && (let final core::int #t8 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::int && (let final core::int #t7 = a#case#1 = #0#0{core::int} in true) && (let final core::int #t8 = #t1 = a#case#1 in true)) {
         final core::int a = #t1{core::int};
         {
           return a;
@@ -23,7 +23,7 @@
     }
     {
       final hoisted core::String a;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t11 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) || #0#0 is core::String && (let final core::String #t13 = a = #0#0{core::String} in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t11 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) || #0#0 is core::String && (let final core::String #t13 = a = #0#0{core::String} in true)) {
         {
           return a;
         }
diff --git a/pkg/front_end/testcases/patterns/for_final_variable.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/for_final_variable.dart.strong.transformed.expect
index fe7a42a..e1a2d64 100644
--- a/pkg/front_end/testcases/patterns/for_final_variable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/for_final_variable.dart.strong.transformed.expect
@@ -114,7 +114,7 @@
       synthesized core::bool #1#1#isSet = false;
       synthesized core::String #1#2;
       synthesized core::bool #1#2#isSet = false;
-      if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t3 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t4 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t5 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t6 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t7 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t8 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
+      if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t3 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t4 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t5 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t6 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t7 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t8 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t9 = i;
@@ -132,7 +132,7 @@
       synthesized core::bool #2#1#isSet = false;
       synthesized core::String #2#2;
       synthesized core::bool #2#2#isSet = false;
-      if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t11 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t12 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t14 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t15 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t16 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
+      if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t11 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t12 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t14 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t15 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t16 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t17 = i;
@@ -172,7 +172,7 @@
       synthesized core::bool #4#1#isSet = false;
       synthesized core::String #4#2;
       synthesized core::bool #4#2#isSet = false;
-      if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t24 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t25 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t26 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t27 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t28 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t29 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
+      if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t24 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t25 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t26 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t27 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t28 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t29 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t30 = i;
@@ -190,7 +190,7 @@
       synthesized core::bool #5#1#isSet = false;
       synthesized core::String #5#2;
       synthesized core::bool #5#2#isSet = false;
-      if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t33 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t34 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t35 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t36 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t37 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t38 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
+      if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t33 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t34 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t35 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t36 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t37 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t38 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t39 = i;
@@ -241,7 +241,7 @@
           synthesized core::bool #1#1#isSet = false;
           synthesized core::String #1#2;
           synthesized core::bool #1#2#isSet = false;
-          if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t44 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t45 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t46 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t47 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t48 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t49 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
+          if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t44 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t45 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t46 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t48 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t49 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         invalid-expression "pkg/front_end/testcases/patterns/for_final_variable.dart:42:5: Error: Can't assign to the final variable 'i'.
@@ -263,7 +263,7 @@
           synthesized core::bool #2#1#isSet = false;
           synthesized core::String #2#2;
           synthesized core::bool #2#2#isSet = false;
-          if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t51 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t52 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t53 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t54 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t55 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t56 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
+          if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t51 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t52 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t53 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t54 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t55 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t56 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         i = i.{core::num::+}(1){(core::num) → core::int};
@@ -317,7 +317,7 @@
             synthesized core::bool #4#1#isSet = false;
             synthesized core::String #4#2;
             synthesized core::bool #4#2#isSet = false;
-            if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t63 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t64 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t65 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t66 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t67 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t68 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
+            if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t63 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t64 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t65 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t66 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t67 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t68 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t61.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/patterns/for_final_variable.dart:55:7: Error: Can't assign to the final variable 'i'.
@@ -342,7 +342,7 @@
             synthesized core::bool #5#1#isSet = false;
             synthesized core::String #5#2;
             synthesized core::bool #5#2#isSet = false;
-            if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t71 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t72 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t73 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t74 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t75 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t76 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
+            if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t71 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t72 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t73 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t74 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t75 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t76 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t69.{core::List::add}{Invariant}(i = i.{core::num::+}(1){(core::num) → core::int}){(core::int) → void};
diff --git a/pkg/front_end/testcases/patterns/for_final_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/for_final_variable.dart.weak.transformed.expect
index fe7a42a..e1a2d64 100644
--- a/pkg/front_end/testcases/patterns/for_final_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/for_final_variable.dart.weak.transformed.expect
@@ -114,7 +114,7 @@
       synthesized core::bool #1#1#isSet = false;
       synthesized core::String #1#2;
       synthesized core::bool #1#2#isSet = false;
-      if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t3 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t4 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t5 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t6 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t7 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t8 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
+      if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t3 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t4 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t5 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t6 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t7 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t8 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t9 = i;
@@ -132,7 +132,7 @@
       synthesized core::bool #2#1#isSet = false;
       synthesized core::String #2#2;
       synthesized core::bool #2#2#isSet = false;
-      if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t11 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t12 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t14 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t15 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t16 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
+      if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t11 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t12 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t14 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t15 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t16 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t17 = i;
@@ -172,7 +172,7 @@
       synthesized core::bool #4#1#isSet = false;
       synthesized core::String #4#2;
       synthesized core::bool #4#2#isSet = false;
-      if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t24 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t25 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t26 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t27 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t28 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t29 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
+      if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t24 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t25 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t26 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t27 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t28 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t29 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t30 = i;
@@ -190,7 +190,7 @@
       synthesized core::bool #5#1#isSet = false;
       synthesized core::String #5#2;
       synthesized core::bool #5#2#isSet = false;
-      if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t33 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t34 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t35 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t36 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t37 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t38 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
+      if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t33 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t34 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t35 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t36 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t37 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t38 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t39 = i;
@@ -241,7 +241,7 @@
           synthesized core::bool #1#1#isSet = false;
           synthesized core::String #1#2;
           synthesized core::bool #1#2#isSet = false;
-          if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t44 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t45 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool* #t46 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t47 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t48 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool* #t49 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
+          if(!((#1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t44 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int}) is core::int && (let final core::int #t45 = i = #1#1#isSet ?{core::int} #1#1{core::int} : let final core::bool #t46 = #1#1#isSet = true in #1#1 = #1#0.$1{core::int} in true) && ((#1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t47 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String}) is core::String && (let final core::String #t48 = s = #1#2#isSet ?{core::String} #1#2{core::String} : let final core::bool #t49 = #1#2#isSet = true in #1#2 = #1#0.$2{core::String} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         invalid-expression "pkg/front_end/testcases/patterns/for_final_variable.dart:42:5: Error: Can't assign to the final variable 'i'.
@@ -263,7 +263,7 @@
           synthesized core::bool #2#1#isSet = false;
           synthesized core::String #2#2;
           synthesized core::bool #2#2#isSet = false;
-          if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t51 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t52 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t53 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t54 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t55 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool* #t56 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
+          if(!((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t51 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int}) is core::int && (let final core::int #t52 = i = #2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t53 = #2#1#isSet = true in #2#1 = #2#0.$1{core::int} in true) && ((#2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t54 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String}) is core::String && (let final core::String #t55 = s = #2#2#isSet ?{core::String} #2#2{core::String} : let final core::bool #t56 = #2#2#isSet = true in #2#2 = #2#0.$2{core::String} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         i = i.{core::num::+}(1){(core::num) → core::int};
@@ -317,7 +317,7 @@
             synthesized core::bool #4#1#isSet = false;
             synthesized core::String #4#2;
             synthesized core::bool #4#2#isSet = false;
-            if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t63 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t64 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool* #t65 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t66 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t67 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool* #t68 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
+            if(!((#4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t63 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int}) is core::int && (let final core::int #t64 = i = #4#1#isSet ?{core::int} #4#1{core::int} : let final core::bool #t65 = #4#1#isSet = true in #4#1 = #4#0.$1{core::int} in true) && ((#4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t66 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String}) is core::String && (let final core::String #t67 = s = #4#2#isSet ?{core::String} #4#2{core::String} : let final core::bool #t68 = #4#2#isSet = true in #4#2 = #4#0.$2{core::String} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t61.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/patterns/for_final_variable.dart:55:7: Error: Can't assign to the final variable 'i'.
@@ -342,7 +342,7 @@
             synthesized core::bool #5#1#isSet = false;
             synthesized core::String #5#2;
             synthesized core::bool #5#2#isSet = false;
-            if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t71 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t72 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t73 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t74 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t75 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool* #t76 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
+            if(!((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t71 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int}) is core::int && (let final core::int #t72 = i = #5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t73 = #5#1#isSet = true in #5#1 = #5#0.$1{core::int} in true) && ((#5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t74 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String}) is core::String && (let final core::String #t75 = s = #5#2#isSet ?{core::String} #5#2{core::String} : let final core::bool #t76 = #5#2#isSet = true in #5#2 = #5#0.$2{core::String} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t69.{core::List::add}{Invariant}(i = i.{core::num::+}(1){(core::num) → core::int}){(core::int) → void};
diff --git a/pkg/front_end/testcases/patterns/for_in_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/for_in_inference.dart.strong.transformed.expect
index 1c1ff93..4fa0f8f 100644
--- a/pkg/front_end/testcases/patterns/for_in_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/for_in_inference.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
           synthesized core::bool #0#4#isSet = false;
           synthesized core::List<core::int> #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t3 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t5 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t7 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+          if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t3 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t5 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t7 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         return c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool};
@@ -43,7 +43,7 @@
             synthesized core::bool #0#4#isSet = false;
             synthesized core::List<core::int> #0#6;
             synthesized core::bool #0#6#isSet = false;
-            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t12 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t14 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t16 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t12 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t14 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t16 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t9.{core::List::add}{Invariant}(c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool}){(core::bool) → void};
@@ -69,7 +69,7 @@
             synthesized core::bool #0#4#isSet = false;
             synthesized core::List<core::int> #0#6;
             synthesized core::bool #0#6#isSet = false;
-            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t20 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t21 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t22 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t23 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t24 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t25 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t26 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t20 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t21 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t22 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t23 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t24 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t25 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t26 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t18.{core::Set::add}{Invariant}(c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool}){(core::bool) → core::bool};
@@ -95,7 +95,7 @@
             synthesized core::bool #0#4#isSet = false;
             synthesized core::List<core::int> #0#6;
             synthesized core::bool #0#6#isSet = false;
-            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t29 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t30 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t31 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t32 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t33 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t34 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t35 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t29 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t30 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t31 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t32 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t33 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t34 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t35 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t27.{core::Map::[]=}{Invariant}(c2.{core::Iterable::first}{core::int}, c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool}){(core::int, core::bool) → void};
diff --git a/pkg/front_end/testcases/patterns/for_in_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/for_in_inference.dart.weak.transformed.expect
index 1c1ff93..4fa0f8f 100644
--- a/pkg/front_end/testcases/patterns/for_in_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/for_in_inference.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
           synthesized core::bool #0#4#isSet = false;
           synthesized core::List<core::int> #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t3 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t5 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t7 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+          if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t3 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t5 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t7 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         return c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool};
@@ -43,7 +43,7 @@
             synthesized core::bool #0#4#isSet = false;
             synthesized core::List<core::int> #0#6;
             synthesized core::bool #0#6#isSet = false;
-            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t12 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t14 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t16 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t12 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t14 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t16 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t9.{core::List::add}{Invariant}(c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool}){(core::bool) → void};
@@ -69,7 +69,7 @@
             synthesized core::bool #0#4#isSet = false;
             synthesized core::List<core::int> #0#6;
             synthesized core::bool #0#6#isSet = false;
-            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t20 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t21 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t22 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t23 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t24 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t25 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t26 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t20 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t21 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t22 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t23 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t24 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t25 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t26 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t18.{core::Set::add}{Invariant}(c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool}){(core::bool) → core::bool};
@@ -95,7 +95,7 @@
             synthesized core::bool #0#4#isSet = false;
             synthesized core::List<core::int> #0#6;
             synthesized core::bool #0#6#isSet = false;
-            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t29 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t30 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t31 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t32 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t33 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t34 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool* #t35 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
+            if(!(#0#0.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t29 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t30 = a2 = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t31 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int} in true)) && (let final core::int #t32 = b2 = #0#0.{core::List::[]}(1){(core::int) → core::int} in true) && ((#0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t33 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>}) is core::List<core::int> && (let final core::List<core::int> #t34 = c2 = #0#6#isSet ?{core::List<core::int>} #0#6{core::List<core::int>} : let final core::bool #t35 = #0#6#isSet = true in #0#6 = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true))))
               throw{for-error-handling} new core::StateError::•("Pattern matching error");
           }
           #t27.{core::Map::[]=}{Invariant}(c2.{core::Iterable::first}{core::int}, c2.{core::Iterable::first}{core::int}.{core::int::isEven}{core::bool}){(core::int, core::bool) → void};
diff --git a/pkg/front_end/testcases/patterns/for_in_inference_error.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/for_in_inference_error.dart.strong.transformed.expect
index 07c1797..a360eaae 100644
--- a/pkg/front_end/testcases/patterns/for_in_inference_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/for_in_inference_error.dart.strong.transformed.expect
@@ -24,7 +24,7 @@
           final synthesized invalid-type #0#0 = #t1;
           synthesized invalid-type #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0 is core::List<invalid-type> && #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type}) is core::int && (let final invalid-type #t3 = x = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type} in true))))
+          if(!(#0#0 is core::List<invalid-type> && #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type}) is core::int && (let final invalid-type #t3 = x = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
       }
diff --git a/pkg/front_end/testcases/patterns/for_in_inference_error.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/for_in_inference_error.dart.weak.transformed.expect
index 07c1797..a360eaae 100644
--- a/pkg/front_end/testcases/patterns/for_in_inference_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/for_in_inference_error.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
           final synthesized invalid-type #0#0 = #t1;
           synthesized invalid-type #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0 is core::List<invalid-type> && #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type}) is core::int && (let final invalid-type #t3 = x = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type} in true))))
+          if(!(#0#0 is core::List<invalid-type> && #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type}) is core::int && (let final invalid-type #t3 = x = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → invalid-type} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
       }
diff --git a/pkg/front_end/testcases/patterns/generic_extension_access.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/generic_extension_access.dart.strong.transformed.expect
index 1c76048..89feb06 100644
--- a/pkg/front_end/testcases/patterns/generic_extension_access.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/generic_extension_access.dart.strong.transformed.expect
@@ -44,7 +44,7 @@
     {
       {
         hoisted core::num member;
-        if((let final core::num #t2 = member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0) in true) && member.{core::num::<}(0){(core::num) → core::bool}) {
+        if((let final core::num #t2 = member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0) in true) && member.{core::num::<}(0){(core::num) → core::bool}) {
           #t1 = member;
           break #L1;
         }
@@ -59,7 +59,7 @@
       {
         hoisted core::num member;
         if(true) {
-          member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t5 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0);
+          member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t5 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0);
           #t1 = member.{core::num::unary-}(){() → core::num};
           break #L1;
         }
@@ -76,16 +76,16 @@
     {
       {
         hoisted core::int member;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
           #t6 = member;
           break #L2;
         }
       }
       {
         hoisted core::double member;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::double) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::double;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::double) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::double;
           #t6 = member;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/generic_extension_access.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/generic_extension_access.dart.weak.transformed.expect
index fc89603..213449a 100644
--- a/pkg/front_end/testcases/patterns/generic_extension_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/generic_extension_access.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
     {
       {
         hoisted core::num member;
-        if((let final core::num #t2 = member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t3 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0) in true) && member.{core::num::<}(0){(core::num) → core::bool}) {
+        if((let final core::num #t2 = member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t3 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0) in true) && member.{core::num::<}(0){(core::num) → core::bool}) {
           #t1 = member;
           break #L1;
         }
@@ -60,7 +60,7 @@
       {
         hoisted core::num member;
         if(true) {
-          member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t5 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0);
+          member = #0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t5 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0);
           #t1 = member.{core::num::unary-}(){() → core::num};
           break #L1;
         }
@@ -78,16 +78,16 @@
     {
       {
         hoisted core::int member;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::int) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::int;
           #t6 = member;
           break #L2;
         }
       }
       {
         hoisted core::double member;
-        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t9 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::double) {
-          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::double;
+        if((#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t9 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) is core::double) {
+          member = (#0#1#isSet ?{core::num} #0#1{core::num} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = self::_extension#0|get#member<core::num>(#0#0)) as{Unchecked} core::double;
           #t6 = member;
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/identical_map_keys.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/identical_map_keys.dart.strong.transformed.expect
index 49aa0a9..d8fffd1 100644
--- a/pkg/front_end/testcases/patterns/identical_map_keys.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/identical_map_keys.dart.strong.transformed.expect
@@ -225,13 +225,13 @@
     #L1:
     {
       {
-        if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t7 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+        if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t7 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
           #t1 = "";
           break #L1;
         }
       }
       {
-        if((!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t8 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t9 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t10 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t11 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t12 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t13 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+        if((!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t8 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t9 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t10 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t11 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t12 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t13 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
           #t1 = "";
           break #L1;
         }
@@ -239,8 +239,8 @@
       {
         hoisted dynamic a1;
         final hoisted dynamic b1;
-        if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t14 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t15 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t16 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t17 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t18 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}))) {
-          b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t20 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
+        if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t14 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t15 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t16 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t17 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t18 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}))) {
+          b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t20 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
           #t1 = "";
           break #L1;
         }
@@ -248,8 +248,8 @@
       {
         hoisted dynamic a2;
         final hoisted dynamic b2;
-        if((!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t21 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t22 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t23 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t24 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t25 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t26 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}))) {
-          b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t27 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
+        if((!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t21 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t22 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t23 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t24 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t25 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t26 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}))) {
+          b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t27 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
           #t1 = "";
           break #L1;
         }
@@ -257,8 +257,8 @@
       {
         hoisted dynamic a3;
         final hoisted dynamic b3;
-        if((!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t28 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t29 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t30 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t31 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t32 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t33 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}))) {
-          b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t34 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
+        if((!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t28 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t29 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t30 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t31 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t32 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t33 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}))) {
+          b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t34 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
           #t1 = "";
           break #L1;
         }
@@ -293,14 +293,14 @@
     synthesized core::bool #0#16;
     synthesized core::bool #0#16#isSet = false;
     {
-      if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t35 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t36 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t37 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t38 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t39 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t40 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+      if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t35 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t36 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t37 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t38 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t39 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t40 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
         {
           break #L2;
         }
       }
     }
     {
-      if((!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t41 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t42 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t43 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t44 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t45 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t46 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+      if((!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t41 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t42 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t43 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t44 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t45 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t46 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
         {
           break #L2;
         }
@@ -311,7 +311,7 @@
       final hoisted dynamic b1;
       hoisted dynamic a2;
       final hoisted dynamic b2;
-      if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t47 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t48 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t49 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t50 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t51 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t52 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t53 = b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t54 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) || (!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t55 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t56 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t57 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t58 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t59 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t60 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t61 = b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t62 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+      if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t47 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t48 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t49 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t50 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t51 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t52 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t53 = b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t54 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) || (!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t55 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t56 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t57 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t58 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (!((#0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t59 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t60 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t61 = b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t62 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
         {
           break #L2;
         }
@@ -320,7 +320,7 @@
     {
       hoisted dynamic a3;
       final hoisted dynamic b3;
-      if((!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t63 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t64 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t65 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t66 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t67 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t68 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t69 = b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t70 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true)) {
+      if((!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t63 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t64 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t65 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t66 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (!((#0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t67 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t68 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t69 = b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t70 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true)) {
         {
           break #L2;
         }
@@ -335,7 +335,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::bool #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t71 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t72 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t73 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t74 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t75 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t76 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+    if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t71 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t72 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t73 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t74 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t75 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t76 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
     }
   }
   {
@@ -344,7 +344,7 @@
     synthesized core::bool #1#3#isSet = false;
     synthesized core::bool #1#2;
     synthesized core::bool #1#2#isSet = false;
-    if((!((#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool* #t77 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t78 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool* #t79 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool* #t80 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t81 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool* #t82 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+    if((!((#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool #t77 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t78 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C2 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool #t79 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool #t80 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t81 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && #C3 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool #t82 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
     }
   }
   {
@@ -356,8 +356,8 @@
     {
       hoisted dynamic a1;
       final hoisted dynamic b1;
-      if((!((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t83 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t84 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t85 = a1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t86 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (!((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t87 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t88 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}))) {
-        b1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t89 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
+      if((!((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t83 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t84 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final dynamic #t85 = a1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t86 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (!((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t87 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t88 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}))) {
+        b1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t89 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
         {}
       }
     }
@@ -371,8 +371,8 @@
     {
       hoisted dynamic a2;
       final hoisted dynamic b2;
-      if((!((#3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool* #t90 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t91 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t92 = a2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool* #t93 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (!((#3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool* #t94 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t95 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}))) {
-        b2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool* #t96 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
+      if((!((#3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool #t90 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t91 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final dynamic #t92 = a2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool #t93 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (!((#3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool #t94 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t95 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}))) {
+        b2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool #t96 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
         {}
       }
     }
@@ -386,8 +386,8 @@
     {
       hoisted dynamic a3;
       final hoisted dynamic b3;
-      if((!((#4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool* #t97 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t98 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t99 = a3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool* #t100 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (!((#4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool* #t101 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t102 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}))) {
-        b3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool* #t103 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
+      if((!((#4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool #t97 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t98 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final dynamic #t99 = a3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool #t100 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (!((#4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool #t101 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t102 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}))) {
+        b3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool #t103 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
         {}
       }
     }
@@ -402,7 +402,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::bool #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t104 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t105 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t106 = a = let core::int? #t107 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t108 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t107 == null ?{core::int} #t107 as{Unchecked} core::int : #t107{core::int} in true) && (!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t109 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t110 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t111 = b = let core::int? #t112 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t113 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t112 == null ?{core::int} #t112 as{Unchecked} core::int : #t112{core::int} in true)))
+    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t104 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t105 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t106 = a = let core::int? #t107 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t108 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t107 == null ?{core::int} #t107 as{Unchecked} core::int : #t107{core::int} in true) && (!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t109 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t110 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t111 = b = let core::int? #t112 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t113 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t112 == null ?{core::int} #t112 as{Unchecked} core::int : #t112{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   hoisted has-declared-initializer core::int c;
@@ -413,7 +413,7 @@
     synthesized core::bool #1#3#isSet = false;
     synthesized core::bool #1#2;
     synthesized core::bool #1#2#isSet = false;
-    if(!((!((#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t114 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) == null) || null is core::int && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t115 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && (let final core::int #t116 = c = let core::int? #t117 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t118 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?} in #t117 == null ?{core::int} #t117 as{Unchecked} core::int : #t117{core::int} in true) && (!((#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t119 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) == null) || null is core::int && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t120 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && (let final core::int #t121 = d = let core::int? #t122 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t123 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?} in #t122 == null ?{core::int} #t122 as{Unchecked} core::int : #t122{core::int} in true)))
+    if(!((!((#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t114 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) == null) || null is core::int && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t115 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && (let final core::int #t116 = c = let core::int? #t117 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t118 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?} in #t117 == null ?{core::int} #t117 as{Unchecked} core::int : #t117{core::int} in true) && (!((#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t119 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) == null) || null is core::int && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t120 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool})) && (let final core::int #t121 = d = let core::int? #t122 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t123 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?} in #t122 == null ?{core::int} #t122 as{Unchecked} core::int : #t122{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer core::int a1;
@@ -424,7 +424,7 @@
     synthesized core::bool #2#3#isSet = false;
     synthesized core::bool #2#2;
     synthesized core::bool #2#2#isSet = false;
-    if(!((!((#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool* #t124 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t125 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t126 = a1 = let core::int? #t127 = #2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool* #t128 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t127 == null ?{core::int} #t127 as{Unchecked} core::int : #t127{core::int} in true) && (!((#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool* #t129 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t130 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t131 = b1 = let core::int? #t132 = #2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool* #t133 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t132 == null ?{core::int} #t132 as{Unchecked} core::int : #t132{core::int} in true)))
+    if(!((!((#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t124 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t125 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t126 = a1 = let core::int? #t127 = #2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t128 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t127 == null ?{core::int} #t127 as{Unchecked} core::int : #t127{core::int} in true) && (!((#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t129 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t130 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (let final core::int #t131 = b1 = let core::int? #t132 = #2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t133 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t132 == null ?{core::int} #t132 as{Unchecked} core::int : #t132{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer core::int a2;
@@ -435,7 +435,7 @@
     synthesized core::bool #3#3#isSet = false;
     synthesized core::bool #3#2;
     synthesized core::bool #3#2#isSet = false;
-    if(!((!((#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool* #t134 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) == null) || null is core::int && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t135 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final core::int #t136 = a2 = let core::int? #t137 = #3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool* #t138 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?} in #t137 == null ?{core::int} #t137 as{Unchecked} core::int : #t137{core::int} in true) && (!((#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool* #t139 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) == null) || null is core::int && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t140 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final core::int #t141 = b2 = let core::int? #t142 = #3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool* #t143 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?} in #t142 == null ?{core::int} #t142 as{Unchecked} core::int : #t142{core::int} in true)))
+    if(!((!((#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t134 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) == null) || null is core::int && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t135 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final core::int #t136 = a2 = let core::int? #t137 = #3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t138 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?} in #t137 == null ?{core::int} #t137 as{Unchecked} core::int : #t137{core::int} in true) && (!((#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t139 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) == null) || null is core::int && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t140 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) && (let final core::int #t141 = b2 = let core::int? #t142 = #3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t143 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?} in #t142 == null ?{core::int} #t142 as{Unchecked} core::int : #t142{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer core::int a3;
@@ -446,7 +446,7 @@
     synthesized core::bool #4#3#isSet = false;
     synthesized core::bool #4#2;
     synthesized core::bool #4#2#isSet = false;
-    if(!((!((#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool* #t144 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t145 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final core::int #t146 = a3 = let core::int? #t147 = #4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool* #t148 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t147 == null ?{core::int} #t147 as{Unchecked} core::int : #t147{core::int} in true) && (!((#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool* #t149 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t150 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final core::int #t151 = b3 = let core::int? #t152 = #4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool* #t153 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t152 == null ?{core::int} #t152 as{Unchecked} core::int : #t152{core::int} in true)))
+    if(!((!((#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t144 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t145 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final core::int #t146 = a3 = let core::int? #t147 = #4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t148 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t147 == null ?{core::int} #t147 as{Unchecked} core::int : #t147{core::int} in true) && (!((#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t149 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t150 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (let final core::int #t151 = b3 = let core::int? #t152 = #4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t153 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t152 == null ?{core::int} #t152 as{Unchecked} core::int : #t152{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect
index 364564c..081c71e 100644
--- a/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/identical_map_keys.dart.weak.transformed.expect
@@ -226,13 +226,13 @@
     #L1:
     {
       {
-        if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+        if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
           #t1 = "";
           break #L1;
         }
       }
       {
-        if((#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t6 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t7 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t8 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t9 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+        if((#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t6 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t7 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t8 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t9 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
           #t1 = "";
           break #L1;
         }
@@ -240,8 +240,8 @@
       {
         hoisted dynamic a1;
         final hoisted dynamic b1;
-        if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t11 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t12 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) {
-          b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t14 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
+        if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t11 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t12 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) {
+          b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t14 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
           #t1 = "";
           break #L1;
         }
@@ -249,8 +249,8 @@
       {
         hoisted dynamic a2;
         final hoisted dynamic b2;
-        if((#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t15 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t16 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t17 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t18 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) {
-          b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t19 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
+        if((#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t15 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t16 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t17 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t18 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) {
+          b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t19 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
           #t1 = "";
           break #L1;
         }
@@ -258,8 +258,8 @@
       {
         hoisted dynamic a3;
         final hoisted dynamic b3;
-        if((#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t20 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t21 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t22 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t23 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) {
-          b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t24 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
+        if((#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t20 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t21 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t22 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t23 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) {
+          b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t24 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
           #t1 = "";
           break #L1;
         }
@@ -295,14 +295,14 @@
     synthesized dynamic #0#17;
     synthesized core::bool #0#17#isSet = false;
     {
-      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t26 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t27 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t28 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t26 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t27 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t28 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
         {
           break #L2;
         }
       }
     }
     {
-      if((#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t29 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t30 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t31 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t32 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+      if((#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t29 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t30 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t31 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t32 = #0#9#isSet = true in #0#9 = #0#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
         {
           break #L2;
         }
@@ -313,7 +313,7 @@
       final hoisted dynamic b1;
       hoisted dynamic a2;
       final hoisted dynamic b2;
-      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t33 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t34 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t35 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t36 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t37 = b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t38 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) || (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t39 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t40 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t41 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool* #t42 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t43 = b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool* #t44 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+      if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t33 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t34 = a1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t35 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t36 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t37 = b1 = #0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t38 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) || (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t39 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t40 = a2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t41 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (#0#13#isSet ?{core::bool} #0#13{core::bool} : let final core::bool #t42 = #0#13#isSet = true in #0#13 = #0#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t43 = b2 = #0#14#isSet ?{dynamic} #0#14{dynamic} : let final core::bool #t44 = #0#14#isSet = true in #0#14 = #0#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
         {
           break #L2;
         }
@@ -322,7 +322,7 @@
     {
       hoisted dynamic a3;
       final hoisted dynamic b3;
-      if((#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t45 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t46 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t47 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool* #t48 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t49 = b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool* #t50 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true)) {
+      if((#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t45 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t46 = a3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t47 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (#0#16#isSet ?{core::bool} #0#16{core::bool} : let final core::bool #t48 = #0#16#isSet = true in #0#16 = #0#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t49 = b3 = #0#17#isSet ?{dynamic} #0#17{dynamic} : let final core::bool #t50 = #0#17#isSet = true in #0#17 = #0#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true)) {
         {
           break #L2;
         }
@@ -337,7 +337,7 @@
     synthesized core::bool #0#2#isSet = false;
     synthesized dynamic #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t51 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t52 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t53 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t54 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+    if((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t51 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t52 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t53 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t54 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
     }
   }
   {
@@ -346,7 +346,7 @@
     synthesized core::bool #1#2#isSet = false;
     synthesized dynamic #1#3;
     synthesized core::bool #1#3#isSet = false;
-    if((#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t55 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool* #t56 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t57 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool* #t58 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+    if((#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t55 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool #t56 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t57 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#1#3#isSet ?{dynamic} #1#3{dynamic} : let final core::bool #t58 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
     }
   }
   {
@@ -358,8 +358,8 @@
     {
       hoisted dynamic a1;
       final hoisted dynamic b1;
-      if((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t59 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t60 = a1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t61 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t62 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) {
-        b1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t63 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
+      if((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t59 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t60 = a1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t61 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true) && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t62 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) {
+        b1 = #2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t63 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → dynamic};
         {}
       }
     }
@@ -373,8 +373,8 @@
     {
       hoisted dynamic a2;
       final hoisted dynamic b2;
-      if((#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t64 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t65 = a2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool* #t66 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t67 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) {
-        b2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool* #t68 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
+      if((#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t64 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t65 = a2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool #t66 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true) && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t67 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) {
+        b2 = #3#3#isSet ?{dynamic} #3#3{dynamic} : let final core::bool #t68 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → dynamic};
         {}
       }
     }
@@ -388,8 +388,8 @@
     {
       hoisted dynamic a3;
       final hoisted dynamic b3;
-      if((#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t69 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t70 = a3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool* #t71 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t72 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) {
-        b3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool* #t73 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
+      if((#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t69 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final dynamic #t70 = a3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool #t71 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic} in true) && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t72 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) {
+        b3 = #4#3#isSet ?{dynamic} #4#3{dynamic} : let final core::bool #t73 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → dynamic};
         {}
       }
     }
@@ -404,7 +404,7 @@
     synthesized core::bool #0#2#isSet = false;
     synthesized core::int? #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if(!((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t74 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t75 = a = (#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t76 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool* #t77 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t78 = b = (#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t79 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
+    if(!((#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t74 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t75 = a = (#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t76 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#0#2#isSet ?{core::bool} #0#2{core::bool} : let final core::bool #t77 = #0#2#isSet = true in #0#2 = #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t78 = b = (#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t79 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   hoisted has-declared-initializer core::int c;
@@ -415,7 +415,7 @@
     synthesized core::bool #1#2#isSet = false;
     synthesized core::int? #1#3;
     synthesized core::bool #1#3#isSet = false;
-    if(!((#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t80 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t81 = c = (#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t82 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool* #t83 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t84 = d = (#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t85 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
+    if(!((#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t80 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t81 = c = (#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t82 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#1#2#isSet ?{core::bool} #1#2{core::bool} : let final core::bool #t83 = #1#2#isSet = true in #1#2 = #1#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::int #t84 = d = (#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t85 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C2){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer core::int a1;
@@ -426,7 +426,7 @@
     synthesized core::bool #2#2#isSet = false;
     synthesized core::int? #2#3;
     synthesized core::bool #2#3#isSet = false;
-    if(!((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t86 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t87 = a1 = (#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool* #t88 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool* #t89 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t90 = b1 = (#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool* #t91 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
+    if(!((#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t86 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t87 = a1 = (#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t88 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#2#2#isSet ?{core::bool} #2#2{core::bool} : let final core::bool #t89 = #2#2#isSet = true in #2#2 = #2#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t90 = b1 = (#2#3#isSet ?{core::int?} #2#3{core::int?} : let final core::bool #t91 = #2#3#isSet = true in #2#3 = #2#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer core::int a2;
@@ -437,7 +437,7 @@
     synthesized core::bool #3#2#isSet = false;
     synthesized core::int? #3#3;
     synthesized core::bool #3#3#isSet = false;
-    if(!((#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t92 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t93 = a2 = (#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool* #t94 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool* #t95 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t96 = b2 = (#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool* #t97 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
+    if(!((#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t92 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t93 = a2 = (#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t94 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#3#2#isSet ?{core::bool} #3#2{core::bool} : let final core::bool #t95 = #3#2#isSet = true in #3#2 = #3#0.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final core::int #t96 = b2 = (#3#3#isSet ?{core::int?} #3#3{core::int?} : let final core::bool #t97 = #3#3#isSet = true in #3#3 = #3#0.{core::Map::[]}(#C4){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer core::int a3;
@@ -448,7 +448,7 @@
     synthesized core::bool #4#2#isSet = false;
     synthesized core::int? #4#3;
     synthesized core::bool #4#3#isSet = false;
-    if(!((#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t98 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t99 = a3 = (#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool* #t100 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool* #t101 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t102 = b3 = (#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool* #t103 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
+    if(!((#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t98 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t99 = a3 = (#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t100 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int in true) && (#4#2#isSet ?{core::bool} #4#2{core::bool} : let final core::bool #t101 = #4#2#isSet = true in #4#2 = #4#0.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t102 = b3 = (#4#3#isSet ?{core::int?} #4#3{core::int?} : let final core::bool #t103 = #4#3#isSet = true in #4#3 = #4#0.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/invalid.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/invalid.dart.strong.transformed.expect
index d4017fe..40a28a2 100644
--- a/pkg/front_end/testcases/patterns/invalid.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/invalid.dart.strong.transformed.expect
@@ -30,7 +30,7 @@
     {
       lowered hoisted core::List<invalid-type> a#case#0;
       lowered hoisted core::Object? a#case#1;
-      if(#0#0 is core::List<invalid-type> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 || (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && (let final core::List<Never> #t3 = a#case#0 = #0#0.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<invalid-type>} in true) || true || #0#0 is core::Map<core::Object?, core::Object?> && (!((#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool* #t5 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) == null) || null is core::Object? && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool* #t6 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) || #0#0 is core::String && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{core::String}.{core::String::length}{core::int}) || #0#0 =={core::List::==}{(core::Object) → core::bool} #C4 || invalid-expression "pkg/front_end/testcases/patterns/invalid.dart:13:10: Error: The method '<' isn't defined for the class 'List<invalid-type>'.
+      if(#0#0 is core::List<invalid-type> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 || (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && (let final core::List<Never> #t3 = a#case#0 = #0#0.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<invalid-type>} in true) || true || #0#0 is core::Map<core::Object?, core::Object?> && (!((#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool #t5 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) == null) || null is core::Object? && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool #t6 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) || #0#0 is core::String && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{core::String}.{core::String::length}{core::int}) || #0#0 =={core::List::==}{(core::Object) → core::bool} #C4 || invalid-expression "pkg/front_end/testcases/patterns/invalid.dart:13:10: Error: The method '<' isn't defined for the class 'List<invalid-type>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
     case < 5: // TODO(johnniwinther): Why do we get an error here?
diff --git a/pkg/front_end/testcases/patterns/invalid.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/invalid.dart.weak.transformed.expect
index 1c4b666..866a277 100644
--- a/pkg/front_end/testcases/patterns/invalid.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/invalid.dart.weak.transformed.expect
@@ -28,7 +28,7 @@
     {
       lowered hoisted core::List<invalid-type> a#case#0;
       lowered hoisted core::Object? a#case#1;
-      if(#0#0 is core::List<invalid-type> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 || (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && (let final core::List<Never> #t3 = a#case#0 = #0#0.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<invalid-type>} in true) || true || #0#0 is core::Map<core::Object?, core::Object?> && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?} || #0#0 is core::String && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{core::String}.{core::String::length}{core::int}) || #0#0 =={core::List::==}{(core::Object) → core::bool} #C4 || invalid-expression "pkg/front_end/testcases/patterns/invalid.dart:13:10: Error: The method '<' isn't defined for the class 'List<invalid-type>'.
+      if(#0#0 is core::List<invalid-type> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 || (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && (let final core::List<Never> #t3 = a#case#0 = #0#0.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<invalid-type>} in true) || true || #0#0 is core::Map<core::Object?, core::Object?> && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?} || #0#0 is core::String && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{core::String}.{core::String::length}{core::int}) || #0#0 =={core::List::==}{(core::Object) → core::bool} #C4 || invalid-expression "pkg/front_end/testcases/patterns/invalid.dart:13:10: Error: The method '<' isn't defined for the class 'List<invalid-type>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
     case < 5: // TODO(johnniwinther): Why do we get an error here?
diff --git a/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.strong.transformed.expect
index 357ef63..e47d3a9 100644
--- a/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::double #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(!((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::double && (let final core::double #t3 = v1 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)) && ((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::num && (let final core::double #t7 = v2 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)))))
+    if(!((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::double && (let final core::double #t3 = v1 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)) && ((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::num && (let final core::double #t7 = v2 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::print(v1);
diff --git a/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.weak.transformed.expect
index 357ef63..e47d3a9 100644
--- a/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/invalid_pattern_declares_variables.dart.weak.transformed.expect
@@ -11,7 +11,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::double #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(!((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::double && (let final core::double #t3 = v1 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)) && ((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::num && (let final core::double #t7 = v2 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)))))
+    if(!((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::double && (let final core::double #t3 = v1 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)) && ((#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double}) is core::num && (let final core::double #t7 = v2 = #0#4#isSet ?{core::double} #0#4{core::double} : let final core::bool #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::double} in true)))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::print(v1);
diff --git a/pkg/front_end/testcases/patterns/irrefutable_infix.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/irrefutable_infix.dart.strong.transformed.expect
index 83b936e..07fef0a 100644
--- a/pkg/front_end/testcases/patterns/irrefutable_infix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/irrefutable_infix.dart.strong.transformed.expect
@@ -18,8 +18,8 @@
     {
       hoisted core::int a;
       hoisted core::int b;
-      if(#0#0 is self::Foo && (let final core::int #t1 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int) {
-        b = (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int;
+      if(#0#0 is self::Foo && (let final core::int #t1 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int) {
+        b = (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int;
         {
           core::print(a.{core::num::+}(b){(core::num) → core::int});
         }
@@ -36,8 +36,8 @@
       hoisted core::int a;
       hoisted core::num b;
       hoisted core::int c;
-      if(#0#0 is self::Foo && (let final core::int #t4 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (let final core::num #t5 = b = #0#0{self::Foo}.{self::Foo::b}{core::num} in true) && (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
-        c = (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
+      if(#0#0 is self::Foo && (let final core::int #t4 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (let final core::num #t5 = b = #0#0{self::Foo}.{self::Foo::b}{core::num} in true) && (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
+        c = (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
         {
           core::print(a.{core::num::+}(b){(core::num) → core::num}.{core::num::+}(c){(core::num) → core::num});
         }
@@ -56,8 +56,8 @@
       hoisted core::int a;
       hoisted core::bool isEven;
       hoisted core::int c;
-      if(#0#0 is self::Foo && (let final core::int #t8 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int && (let final core::bool #t10 = isEven = ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int).{core::int::isEven}{core::bool} in true)) && (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
-        c = (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool* #t13 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
+      if(#0#0 is self::Foo && (let final core::int #t8 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int && (let final core::bool #t10 = isEven = ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int).{core::int::isEven}{core::bool} in true)) && (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
+        c = (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool #t13 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
         {
           core::print(a.{core::num::+}(c){(core::num) → core::int});
           core::print(isEven);
diff --git a/pkg/front_end/testcases/patterns/irrefutable_infix.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/irrefutable_infix.dart.weak.transformed.expect
index 83b936e..07fef0a 100644
--- a/pkg/front_end/testcases/patterns/irrefutable_infix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/irrefutable_infix.dart.weak.transformed.expect
@@ -18,8 +18,8 @@
     {
       hoisted core::int a;
       hoisted core::int b;
-      if(#0#0 is self::Foo && (let final core::int #t1 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int) {
-        b = (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int;
+      if(#0#0 is self::Foo && (let final core::int #t1 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int) {
+        b = (#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int;
         {
           core::print(a.{core::num::+}(b){(core::num) → core::int});
         }
@@ -36,8 +36,8 @@
       hoisted core::int a;
       hoisted core::num b;
       hoisted core::int c;
-      if(#0#0 is self::Foo && (let final core::int #t4 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (let final core::num #t5 = b = #0#0{self::Foo}.{self::Foo::b}{core::num} in true) && (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
-        c = (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
+      if(#0#0 is self::Foo && (let final core::int #t4 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && (let final core::num #t5 = b = #0#0{self::Foo}.{self::Foo::b}{core::num} in true) && (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
+        c = (#0#4#isSet ?{core::num} #0#4{core::num} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
         {
           core::print(a.{core::num::+}(b){(core::num) → core::num}.{core::num::+}(c){(core::num) → core::num});
         }
@@ -56,8 +56,8 @@
       hoisted core::int a;
       hoisted core::bool isEven;
       hoisted core::int c;
-      if(#0#0 is self::Foo && (let final core::int #t8 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int && (let final core::bool #t10 = isEven = ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int).{core::int::isEven}{core::bool} in true)) && (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
-        c = (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool* #t13 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
+      if(#0#0 is self::Foo && (let final core::int #t8 = a = #0#0{self::Foo}.{self::Foo::a}{core::int} in true) && ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) is core::int && (let final core::bool #t10 = isEven = ((#0#3#isSet ?{core::num} #0#3{core::num} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0{self::Foo}.{self::Foo::b}{core::num}) as{Unchecked} core::int).{core::int::isEven}{core::bool} in true)) && (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) is core::int) {
+        c = (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool #t13 = #0#6#isSet = true in #0#6 = #0#0{self::Foo}.{self::Foo::c}{core::num}) as{Unchecked} core::int;
         {
           core::print(a.{core::num::+}(c){(core::num) → core::int});
           core::print(isEven);
diff --git a/pkg/front_end/testcases/patterns/irrefutable_tail.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/irrefutable_tail.dart.strong.transformed.expect
index 51d7fb8..9999c46 100644
--- a/pkg/front_end/testcases/patterns/irrefutable_tail.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/irrefutable_tail.dart.strong.transformed.expect
@@ -114,7 +114,7 @@
     {
       hoisted self::B b;
       hoisted self::C c;
-      if(#7#0 is self::A && (let final self::B #t2 = b = #7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool* #t3 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B} in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #7#0{self::A}.{self::A::i}{core::int} && ((let final self::C #t4 = c = (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool* #t5 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool* #t6 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
+      if(#7#0 is self::A && (let final self::B #t2 = b = #7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool #t3 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B} in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #7#0{self::A}.{self::A::i}{core::int} && ((let final self::C #t4 = c = (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool #t5 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool #t6 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
         core::print(b);
         core::print(c);
       }
@@ -146,7 +146,7 @@
       {
         hoisted self::B b;
         if(#0#0 is self::A) {
-          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
+          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
           #t7 = b;
           break #L1;
         }
@@ -154,7 +154,7 @@
       {
         hoisted self::C c;
         if(#0#0 is self::A) {
-          c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C};
+          c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C};
           #t7 = c;
           break #L1;
         }
@@ -162,7 +162,7 @@
       {
         hoisted core::int i;
         if(#0#0 is self::A) {
-          i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int};
+          i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int};
           #t7 = i;
           break #L1;
         }
@@ -171,23 +171,23 @@
         hoisted self::B b;
         hoisted core::int i;
         if(#0#0 is self::A) {
-          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
-          i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t14 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int};
+          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
+          i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t14 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int};
           #t7 = "${b}${i}";
           break #L1;
         }
       }
       {
         hoisted self::B b;
-        if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t16 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
-          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t17 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
+        if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t16 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
+          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t17 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
           #t7 = b;
           break #L1;
         }
       }
       {
         hoisted self::B b;
-        if(#0#0 is self::A && (let final self::B #t18 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t20 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t21 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
+        if(#0#0 is self::A && (let final self::B #t18 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t20 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t21 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
           #t7 = b;
           break #L1;
         }
@@ -195,7 +195,7 @@
       {
         hoisted self::B b;
         hoisted self::C c;
-        if(#0#0 is self::A && (let final self::B #t22 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t23 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t24 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t25 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t26 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t27 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t28 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t29 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
+        if(#0#0 is self::A && (let final self::B #t22 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t24 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t25 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t26 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t27 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t28 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t29 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
           #t7 = "${b}${c}";
           break #L1;
         }
@@ -232,7 +232,7 @@
     }
     {
       hoisted self::B b;
-      if(#0#0 is self::A && (let final self::B #t31 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t32 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
+      if(#0#0 is self::A && (let final self::B #t31 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t32 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
         {
           v = b;
           break #L2;
@@ -241,7 +241,7 @@
     }
     {
       hoisted self::C c;
-      if(#0#0 is self::A && (let final self::C #t33 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t34 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t35 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true)) {
+      if(#0#0 is self::A && (let final self::C #t33 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t34 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t35 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true)) {
         {
           v = c;
           break #L2;
@@ -250,7 +250,7 @@
     }
     {
       hoisted core::int i;
-      if(#0#0 is self::A && (let final core::int #t36 = i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t37 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t38 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int} in true)) {
+      if(#0#0 is self::A && (let final core::int #t36 = i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t37 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t38 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int} in true)) {
         {
           v = i;
           break #L2;
@@ -260,7 +260,7 @@
     {
       hoisted self::B b;
       hoisted core::int i;
-      if(#0#0 is self::A && (let final self::B #t39 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t40 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (let final core::int #t41 = i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t42 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int} in true)) {
+      if(#0#0 is self::A && (let final self::B #t39 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t40 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (let final core::int #t41 = i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t42 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int} in true)) {
         {
           v = "${b}${i}";
           break #L2;
@@ -269,7 +269,7 @@
     }
     {
       hoisted self::B b;
-      if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t43 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t44 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && (let final self::B #t45 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t46 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
+      if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t43 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t44 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && (let final self::B #t45 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t46 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
         {
           v = b;
           break #L2;
@@ -278,7 +278,7 @@
     }
     {
       hoisted self::B b;
-      if(#0#0 is self::A && (let final self::B #t47 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t48 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t49 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t50 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
+      if(#0#0 is self::A && (let final self::B #t47 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t48 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t49 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t50 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
         {
           v = b;
           break #L2;
@@ -288,7 +288,7 @@
     {
       hoisted self::B b;
       hoisted self::C c;
-      if(#0#0 is self::A && (let final self::B #t51 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t52 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t53 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t54 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t55 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t56 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t57 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t58 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
+      if(#0#0 is self::A && (let final self::B #t51 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t52 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t53 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t54 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t55 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t56 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t57 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t58 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
         {
           v = "${b}${c}";
         }
diff --git a/pkg/front_end/testcases/patterns/irrefutable_tail.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/irrefutable_tail.dart.weak.transformed.expect
index fed8e0e..e739404 100644
--- a/pkg/front_end/testcases/patterns/irrefutable_tail.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/irrefutable_tail.dart.weak.transformed.expect
@@ -115,7 +115,7 @@
     {
       hoisted self::B b;
       hoisted self::C c;
-      if(#7#0 is self::A && (let final self::B #t2 = b = #7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool* #t3 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B} in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #7#0{self::A}.{self::A::i}{core::int} && ((let final self::C #t4 = c = (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool* #t5 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool* #t6 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
+      if(#7#0 is self::A && (let final self::B #t2 = b = #7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool #t3 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B} in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #7#0{self::A}.{self::A::i}{core::int} && ((let final self::C #t4 = c = (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool #t5 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#7#2#isSet ?{self::B} #7#2{self::B} : let final core::bool #t6 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
         core::print(b);
         core::print(c);
       }
@@ -147,7 +147,7 @@
       {
         hoisted self::B b;
         if(#0#0 is self::A) {
-          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
+          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
           #t7 = b;
           break #L1;
         }
@@ -155,7 +155,7 @@
       {
         hoisted self::C c;
         if(#0#0 is self::A) {
-          c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C};
+          c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C};
           #t7 = c;
           break #L1;
         }
@@ -163,7 +163,7 @@
       {
         hoisted core::int i;
         if(#0#0 is self::A) {
-          i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int};
+          i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int};
           #t7 = i;
           break #L1;
         }
@@ -172,23 +172,23 @@
         hoisted self::B b;
         hoisted core::int i;
         if(#0#0 is self::A) {
-          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
-          i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t14 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int};
+          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
+          i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t14 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int};
           #t7 = "${b}${i}";
           break #L1;
         }
       }
       {
         hoisted self::B b;
-        if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t16 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
-          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t17 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
+        if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t16 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
+          b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t17 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B};
           #t7 = b;
           break #L1;
         }
       }
       {
         hoisted self::B b;
-        if(#0#0 is self::A && (let final self::B #t18 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t20 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t21 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
+        if(#0#0 is self::A && (let final self::B #t18 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t20 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t21 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
           #t7 = b;
           break #L1;
         }
@@ -196,7 +196,7 @@
       {
         hoisted self::B b;
         hoisted self::C c;
-        if(#0#0 is self::A && (let final self::B #t22 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t23 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t24 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t25 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t26 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t27 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t28 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t29 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
+        if(#0#0 is self::A && (let final self::B #t22 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t24 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t25 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t26 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t27 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t28 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t29 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
           #t7 = "${b}${c}";
           break #L1;
         }
@@ -234,7 +234,7 @@
     }
     {
       hoisted self::B b;
-      if(#0#0 is self::A && (let final self::B #t31 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t32 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
+      if(#0#0 is self::A && (let final self::B #t31 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t32 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
         {
           v = b;
           break #L2;
@@ -243,7 +243,7 @@
     }
     {
       hoisted self::C c;
-      if(#0#0 is self::A && (let final self::C #t33 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t34 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t35 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true)) {
+      if(#0#0 is self::A && (let final self::C #t33 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t34 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t35 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true)) {
         {
           v = c;
           break #L2;
@@ -252,7 +252,7 @@
     }
     {
       hoisted core::int i;
-      if(#0#0 is self::A && (let final core::int #t36 = i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t37 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t38 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int} in true)) {
+      if(#0#0 is self::A && (let final core::int #t36 = i = (#0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t37 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t38 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int} in true)) {
         {
           v = i;
           break #L2;
@@ -262,7 +262,7 @@
     {
       hoisted self::B b;
       hoisted core::int i;
-      if(#0#0 is self::A && (let final self::B #t39 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t40 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (let final core::int #t41 = i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t42 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int} in true)) {
+      if(#0#0 is self::A && (let final self::B #t39 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t40 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (let final core::int #t41 = i = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t42 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int} in true)) {
         {
           v = "${b}${i}";
           break #L2;
@@ -271,7 +271,7 @@
     }
     {
       hoisted self::B b;
-      if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t43 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t44 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && (let final self::B #t45 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t46 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
+      if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t43 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t44 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && (let final self::B #t45 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t46 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) {
         {
           v = b;
           break #L2;
@@ -280,7 +280,7 @@
     }
     {
       hoisted self::B b;
-      if(#0#0 is self::A && (let final self::B #t47 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t48 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t49 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t50 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
+      if(#0#0 is self::A && (let final self::B #t47 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t48 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t49 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t50 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) {
         {
           v = b;
           break #L2;
@@ -290,7 +290,7 @@
     {
       hoisted self::B b;
       hoisted self::C c;
-      if(#0#0 is self::A && (let final self::B #t51 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t52 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool* #t53 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t54 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t55 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool* #t56 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t57 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool* #t58 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
+      if(#0#0 is self::A && (let final self::B #t51 = b = #0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t52 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7{core::bool} : let final core::bool #t53 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t54 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final self::C #t55 = c = #0#3#isSet ?{self::C} #0#3{self::C} : let final core::bool #t56 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t57 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2{self::B} : let final core::bool #t58 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) {
         {
           v = "${b}${c}";
         }
diff --git a/pkg/front_end/testcases/patterns/issue50886.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue50886.dart.strong.transformed.expect
index 062e550..6de55f6 100644
--- a/pkg/front_end/testcases/patterns/issue50886.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue50886.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
     final synthesized core::Map<dynamic, dynamic> #0#0 = x;
     synthesized core::int? #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(#0#0 is core::Map<core::int, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t2 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int})) {
+    if(#0#0 is core::Map<core::int, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t2 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int})) {
       return 1;
     }
     else {
@@ -22,7 +22,7 @@
     final synthesized core::Map<dynamic, dynamic> #0#0 = x;
     synthesized core::int? #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(#0#0 is core::Map<core::int, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t5 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t5 == null ?{core::int} #t5 as{Unchecked} core::int : #t5{core::int})) {
+    if(#0#0 is core::Map<core::int, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::int, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t5 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::int, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t5 == null ?{core::int} #t5 as{Unchecked} core::int : #t5{core::int})) {
       return 0;
     }
     else {
diff --git a/pkg/front_end/testcases/patterns/issue50897.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue50897.dart.strong.transformed.expect
index ac2e55b..e08fdcd 100644
--- a/pkg/front_end/testcases/patterns/issue50897.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue50897.dart.strong.transformed.expect
@@ -31,7 +31,7 @@
     #L1:
     {
       {
-        if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is self::Square && (let final self::Unit #t4 = ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as{Unchecked} self::Square).{self::Square::size}{self::Unit} in true))) {
+        if((!((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is self::Square && (let final self::Unit #t4 = ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as{Unchecked} self::Square).{self::Square::size}{self::Unit} in true))) {
           #t1 = "object";
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue50897.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue50897.dart.weak.transformed.expect
index a5ba7d7..a53d49e 100644
--- a/pkg/front_end/testcases/patterns/issue50897.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue50897.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
     #L1:
     {
       {
-        if(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is self::Square && (let final self::Unit #t3 = ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as{Unchecked} self::Square).{self::Square::size}{self::Unit} in true))) {
+        if(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) is self::Square && (let final self::Unit #t3 = ((#0#3#isSet ?{dynamic} #0#3{dynamic} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → dynamic}) as{Unchecked} self::Square).{self::Square::size}{self::Unit} in true))) {
           #t1 = "object";
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue51112.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51112.dart.strong.transformed.expect
index 225f035..86a1236 100644
--- a/pkg/front_end/testcases/patterns/issue51112.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51112.dart.strong.transformed.expect
@@ -37,12 +37,12 @@
     {
       lowered hoisted core::int y#case#0;
       lowered hoisted core::int y#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = y#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = y#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
         setToOne = () → void {
           y#case#0 = 1;
         };
         return true;
-      })(){() → core::bool} && (let final core::int #t7 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t11 = y#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t12 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
+      })(){() → core::bool} && (let final core::int #t7 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t8 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t11 = y#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t12 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
         setToOne = () → void {
           y#case#1 = 1;
         };
@@ -57,7 +57,7 @@
     }
     {
       hoisted core::double y;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t14 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t16 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (() → core::bool {
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t14 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t16 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (() → core::bool {
         setToOne = () → void {
           y = 1.0;
         };
diff --git a/pkg/front_end/testcases/patterns/issue51112.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51112.dart.weak.transformed.expect
index 225f035..86a1236 100644
--- a/pkg/front_end/testcases/patterns/issue51112.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51112.dart.weak.transformed.expect
@@ -37,12 +37,12 @@
     {
       lowered hoisted core::int y#case#0;
       lowered hoisted core::int y#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = y#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t5 = y#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
         setToOne = () → void {
           y#case#0 = 1;
         };
         return true;
-      })(){() → core::bool} && (let final core::int #t7 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t11 = y#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t12 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
+      })(){() → core::bool} && (let final core::int #t7 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t8 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t11 = y#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t12 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (() → core::bool {
         setToOne = () → void {
           y#case#1 = 1;
         };
@@ -57,7 +57,7 @@
     }
     {
       hoisted core::double y;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t14 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t16 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (() → core::bool {
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t14 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C2 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t16 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t17 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (() → core::bool {
         setToOne = () → void {
           y = 1.0;
         };
diff --git a/pkg/front_end/testcases/patterns/issue51138.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51138.dart.strong.transformed.expect
index f984d42..44ac29c 100644
--- a/pkg/front_end/testcases/patterns/issue51138.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51138.dart.strong.transformed.expect
@@ -15,16 +15,16 @@
     #L1:
     {
       {
-        if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num}) && (#0#9#isSet ?{core::num} #0#9{core::num} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::num>}.{core::List::[]}(1){(core::int) → core::num}).{core::num::>}(#C3){(core::num) → core::bool}) {
+        if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num}) && (#0#9#isSet ?{core::num} #0#9{core::num} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::num>}.{core::List::[]}(1){(core::int) → core::num}).{core::num::>}(#C3){(core::num) → core::bool}) {
           #t1 = "relational";
           break #L1;
         }
       }
       {
         hoisted core::num c;
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → dynamic})) {
-          (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t7 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
-          c = (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t8 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → dynamic})) {
+          (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t7 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
+          c = (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t8 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
           #t1 = "cast";
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue51138.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51138.dart.weak.transformed.expect
index 9b32657..f81e6ca 100644
--- a/pkg/front_end/testcases/patterns/issue51138.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51138.dart.weak.transformed.expect
@@ -16,16 +16,16 @@
     #L1:
     {
       {
-        if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num}) && (#0#9#isSet ?{core::num} #0#9{core::num} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::num>}.{core::List::[]}(1){(core::int) → core::num}).{core::num::>}(#C3){(core::num) → core::bool}) {
+        if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::num} #0#6{core::num} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num}) && (#0#9#isSet ?{core::num} #0#9{core::num} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::num>}.{core::List::[]}(1){(core::int) → core::num}).{core::num::>}(#C3){(core::num) → core::bool}) {
           #t1 = "relational";
           break #L1;
         }
       }
       {
         hoisted core::num c;
-        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → dynamic})) {
-          (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t7 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
-          c = (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t8 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
+        if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(0){(core::int) → dynamic})) {
+          (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t7 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
+          c = (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t8 = #0#9#isSet = true in #0#9 = #0#0.{core::List::[]}(1){(core::int) → dynamic}) as core::num;
           #t1 = "cast";
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue51140.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51140.dart.strong.transformed.expect
index 8760a40..5dd36ed 100644
--- a/pkg/front_end/testcases/patterns/issue51140.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51140.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
       }
     }
     {
-      if(#0#0 is core::Map<core::Object?, core::Object?> && (!((#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool* #t1 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) == null) || null is core::Object? && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let final core::Object? #t2 = #0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool* #t3 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?} in true)) {
+      if(#0#0 is core::Map<core::Object?, core::Object?> && (!((#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool #t1 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) == null) || null is core::Object? && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && (let final core::Object? #t2 = #0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final core::bool #t3 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?} in true)) {
         {
           toReturn = "map";
           break #L1;
diff --git a/pkg/front_end/testcases/patterns/issue51260.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51260.dart.strong.transformed.expect
index ef52b4d..eadd97c 100644
--- a/pkg/front_end/testcases/patterns/issue51260.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51260.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
     {
       lowered hoisted core::int a#case#0;
       lowered hoisted core::int a#case#1;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t5 = #t1 = a#case#0 in true) || #0#0 is core::Map<dynamic, dynamic> && (!((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool* #t6 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && ((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool* #t7 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t8 = a#case#1 = (#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool* #t9 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t10 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t5 = #t1 = a#case#0 in true) || #0#0 is core::Map<dynamic, dynamic> && (!((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool #t6 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && ((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool #t7 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t8 = a#case#1 = (#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool #t9 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t10 = #t1 = a#case#1 in true)) {
         core::int a = #t1{core::int};
         {
           return a;
diff --git a/pkg/front_end/testcases/patterns/issue51260.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51260.dart.weak.transformed.expect
index b2cb151..6817dac 100644
--- a/pkg/front_end/testcases/patterns/issue51260.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51260.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
     {
       lowered hoisted core::int a#case#0;
       lowered hoisted core::int a#case#1;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t5 = #t1 = a#case#0 in true) || #0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool* #t6 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t7 = a#case#1 = (#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool* #t8 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t9 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t5 = #t1 = a#case#0 in true) || #0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && ((#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool #t6 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) is core::int && (let final core::int #t7 = a#case#1 = (#0#10#isSet ?{dynamic} #0#10{dynamic} : let final core::bool #t8 = #0#10#isSet = true in #0#10 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t9 = #t1 = a#case#1 in true)) {
         core::int a = #t1{core::int};
         {
           return a;
diff --git a/pkg/front_end/testcases/patterns/issue51313.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51313.dart.strong.transformed.expect
index 60e2bef..b1a8ef8 100644
--- a/pkg/front_end/testcases/patterns/issue51313.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51313.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::num? #0#6;
     synthesized core::bool #0#6#isSet = false;
-    if(!((!((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t3 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && (!((#0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::num? #t6 = #0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true) && (let final core::Map<core::Object, core::num?> #t8 = map = #0#0 in true)))
+    if(!((!((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t3 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && (!((#0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::num? #t6 = #0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true) && (let final core::Map<core::Object, core::num?> #t8 = map = #0#0 in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::print(map.{core::Object::runtimeType}{core::Type});
diff --git a/pkg/front_end/testcases/patterns/issue51313.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51313.dart.weak.transformed.expect
index ab15dc1..89f7ee2 100644
--- a/pkg/front_end/testcases/patterns/issue51313.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51313.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     final synthesized core::Map<core::Object, core::num?> #0#0 = <core::Object, core::num?>{"one": 1, 2: 2};
     synthesized core::num? #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t2 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (let final core::num? #t4 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true) && (let final core::Map<core::Object, core::num?> #t5 = map = #0#0 in true)))
+    if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t2 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (let final core::num? #t4 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true) && (let final core::Map<core::Object, core::num?> #t5 = map = #0#0 in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::print(map.{core::Object::runtimeType}{core::Type});
diff --git a/pkg/front_end/testcases/patterns/issue51314.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51314.dart.strong.transformed.expect
index 1785b7e..f6a27b2 100644
--- a/pkg/front_end/testcases/patterns/issue51314.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51314.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::num? #0#6;
     synthesized core::bool #0#6#isSet = false;
-    if(!((!((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t3 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && (!((#0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::num? #t6 = v2 = #0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true)))
+    if(!((!((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t3 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && (!((#0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::num? #t6 = v2 = #0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::String s = invalid-expression "pkg/front_end/testcases/patterns/issue51314.dart:7:14: Error: A value of type 'num?' can't be assigned to a variable of type 'String'.
diff --git a/pkg/front_end/testcases/patterns/issue51314.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51314.dart.weak.transformed.expect
index 5d58e91..0b26e4f 100644
--- a/pkg/front_end/testcases/patterns/issue51314.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51314.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
     final synthesized core::Map<core::Object, core::num?> #0#0 = <core::Object, core::num?>{"one": 1, 2: 2};
     synthesized core::num? #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t2 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (let final core::num? #t4 = v2 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true)))
+    if(!(#0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t2 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool} && (let final core::num? #t4 = v2 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::String s = invalid-expression "pkg/front_end/testcases/patterns/issue51314.dart:7:14: Error: A value of type 'num?' can't be assigned to a variable of type 'String'.
diff --git a/pkg/front_end/testcases/patterns/issue51480.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51480.dart.strong.transformed.expect
index b7a8b87..4cac646 100644
--- a/pkg/front_end/testcases/patterns/issue51480.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51480.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     final synthesized core::Map<core::String, core::int> #0#0 = <core::String, core::int>{"key": 42};
     synthesized core::int? #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = v = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true)))
+    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = v = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   core::print(self::staticTypeOf<core::int>(v));
diff --git a/pkg/front_end/testcases/patterns/issue51523.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51523.dart.strong.transformed.expect
index ad9d0c8..b1afda6 100644
--- a/pkg/front_end/testcases/patterns/issue51523.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51523.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
     final synthesized core::Map<self::C<core::String>, core::int> #0#0 = <self::C<core::String>, core::int>{#C1: 1};
     synthesized core::int? #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = a1 = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true)))
+    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final core::int #t2 = a1 = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/issue51604.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51604.dart.strong.transformed.expect
index e0c57c1..2a5aff4 100644
--- a/pkg/front_end/testcases/patterns/issue51604.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51604.dart.strong.transformed.expect
@@ -200,7 +200,7 @@
         }
       }
       {
-        if(#0#0 is core::int && (let final core::int #t19 = i3 = #0#0{core::int} in true) && (let final core::int #t20 = #t17 = i3 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i3#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t24 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t25 = #t17 = i3#1 in true)) {
+        if(#0#0 is core::int && (let final core::int #t19 = i3 = #0#0{core::int} in true) && (let final core::int #t20 = #t17 = i3 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i3#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t24 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t25 = #t17 = i3#1 in true)) {
           #t16 = 0;
           break #L6;
         }
@@ -208,7 +208,7 @@
       {
         lowered hoisted core::String s3#case#0;
         lowered hoisted core::String s3#case#1;
-        if(#0#0 is core::String && (let final core::String #t26 = s3#case#0 = #0#0{core::String} in true) && (let final core::String #t27 = #t18 = s3#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t29 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t30 = s3#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t31 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t32 = #t18 = s3#case#1 in true) || true) {
+        if(#0#0 is core::String && (let final core::String #t26 = s3#case#0 = #0#0{core::String} in true) && (let final core::String #t27 = #t18 = s3#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t29 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t30 = s3#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t31 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t32 = #t18 = s3#case#1 in true) || true) {
           core::String s3 = #t18{core::String};
           {
             return s3;
@@ -252,7 +252,7 @@
         }
       }
       {
-        if(#0#0 is core::int && (let final core::int #t36 = i4 = #0#0{core::int} in true) && (let final core::int #t37 = #t34 = i4 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t38 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t39 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t40 = i4#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t41 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (let final core::double #t42 = #t34 = i4#1 in true)) {
+        if(#0#0 is core::int && (let final core::int #t36 = i4 = #0#0{core::int} in true) && (let final core::int #t37 = #t34 = i4 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t38 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t39 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t40 = i4#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t41 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (let final core::double #t42 = #t34 = i4#1 in true)) {
           #t33 = 0;
           break #L9;
         }
@@ -260,7 +260,7 @@
       {
         lowered hoisted core::String s4#case#0;
         lowered final hoisted core::String s4#case#1;
-        if(#0#0 is core::String && (let final core::String #t43 = s4#case#0 = #0#0{core::String} in true) && (let final core::String #t44 = #t35 = s4#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t45 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t46 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t47 = s4#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t48 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t49 = #t35 = s4#case#1 in true) || true) {
+        if(#0#0 is core::String && (let final core::String #t43 = s4#case#0 = #0#0{core::String} in true) && (let final core::String #t44 = #t35 = s4#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t45 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t46 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t47 = s4#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t48 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t49 = #t35 = s4#case#1 in true) || true) {
           core::String s4 = #t35{core::String};
           {
             return s4;
diff --git a/pkg/front_end/testcases/patterns/issue51604.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51604.dart.weak.transformed.expect
index e0c57c1..2a5aff4 100644
--- a/pkg/front_end/testcases/patterns/issue51604.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51604.dart.weak.transformed.expect
@@ -200,7 +200,7 @@
         }
       }
       {
-        if(#0#0 is core::int && (let final core::int #t19 = i3 = #0#0{core::int} in true) && (let final core::int #t20 = #t17 = i3 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i3#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t24 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t25 = #t17 = i3#1 in true)) {
+        if(#0#0 is core::int && (let final core::int #t19 = i3 = #0#0{core::int} in true) && (let final core::int #t20 = #t17 = i3 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t22 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i3#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t24 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final core::int #t25 = #t17 = i3#1 in true)) {
           #t16 = 0;
           break #L6;
         }
@@ -208,7 +208,7 @@
       {
         lowered hoisted core::String s3#case#0;
         lowered hoisted core::String s3#case#1;
-        if(#0#0 is core::String && (let final core::String #t26 = s3#case#0 = #0#0{core::String} in true) && (let final core::String #t27 = #t18 = s3#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t29 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t30 = s3#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t31 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t32 = #t18 = s3#case#1 in true) || true) {
+        if(#0#0 is core::String && (let final core::String #t26 = s3#case#0 = #0#0{core::String} in true) && (let final core::String #t27 = #t18 = s3#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t29 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t30 = s3#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t31 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t32 = #t18 = s3#case#1 in true) || true) {
           core::String s3 = #t18{core::String};
           {
             return s3;
@@ -252,7 +252,7 @@
         }
       }
       {
-        if(#0#0 is core::int && (let final core::int #t36 = i4 = #0#0{core::int} in true) && (let final core::int #t37 = #t34 = i4 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t38 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t39 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t40 = i4#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t41 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (let final core::double #t42 = #t34 = i4#1 in true)) {
+        if(#0#0 is core::int && (let final core::int #t36 = i4 = #0#0{core::int} in true) && (let final core::int #t37 = #t34 = i4 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t38 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t39 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t40 = i4#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t41 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true)) && (let final core::double #t42 = #t34 = i4#1 in true)) {
           #t33 = 0;
           break #L9;
         }
@@ -260,7 +260,7 @@
       {
         lowered hoisted core::String s4#case#0;
         lowered final hoisted core::String s4#case#1;
-        if(#0#0 is core::String && (let final core::String #t43 = s4#case#0 = #0#0{core::String} in true) && (let final core::String #t44 = #t35 = s4#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t45 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t46 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t47 = s4#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool* #t48 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t49 = #t35 = s4#case#1 in true) || true) {
+        if(#0#0 is core::String && (let final core::String #t43 = s4#case#0 = #0#0{core::String} in true) && (let final core::String #t44 = #t35 = s4#case#0 in true) || #0#0 is core::List<dynamic> && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t45 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C5) && ((#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t46 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t47 = s4#case#1 = (#0#8#isSet ?{dynamic} #0#8{dynamic} : let final core::bool #t48 = #0#8#isSet = true in #0#8 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (let final core::String #t49 = #t35 = s4#case#1 in true) || true) {
           core::String s4 = #t35{core::String};
           {
             return s4;
diff --git a/pkg/front_end/testcases/patterns/issue51636.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51636.dart.strong.transformed.expect
index be71344..3f0f0e0 100644
--- a/pkg/front_end/testcases/patterns/issue51636.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51636.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
     #L1:
     {
       {
-        if(#0#0 is core::List<self::f::A%> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if(#0#0 is core::List<self::f::A%> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = 1;
           break #L1;
         }
@@ -28,7 +28,7 @@
       {
         hoisted self::f::A% x;
         hoisted core::List<self::f::A%> xs;
-        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::f::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::f::A%>};
           #t1 = 2;
diff --git a/pkg/front_end/testcases/patterns/issue51636.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51636.dart.weak.transformed.expect
index 239954b..c23f0fd 100644
--- a/pkg/front_end/testcases/patterns/issue51636.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51636.dart.weak.transformed.expect
@@ -21,7 +21,7 @@
     #L1:
     {
       {
-        if(#0#0 is core::List<self::f::A%> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
+        if(#0#0 is core::List<self::f::A%> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C1){(core::num) → core::bool}) {
           #t1 = 1;
           break #L1;
         }
@@ -29,7 +29,7 @@
       {
         hoisted self::f::A% x;
         hoisted core::List<self::f::A%> xs;
-        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+        if((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
           x = #0#0.{core::List::[]}(0){(core::int) → self::f::A%};
           xs = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<self::f::A%>};
           #t1 = 2;
diff --git a/pkg/front_end/testcases/patterns/issue51770.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51770.dart.strong.transformed.expect
index 48092ce..11d2e14 100644
--- a/pkg/front_end/testcases/patterns/issue51770.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51770.dart.strong.transformed.expect
@@ -67,7 +67,7 @@
     synthesized core::bool #5#1#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t3 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t4 = a = #5#0.{core::List::sublist}(0, (#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t3 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t4 = a = #5#0.{core::List::sublist}(0, (#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(a);
         }
@@ -140,7 +140,7 @@
     synthesized core::bool #5#2#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t8 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #5#0{core::List<dynamic>}.{core::List::sublist}(0, (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t10 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t8 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #5#0{core::List<dynamic>}.{core::List::sublist}(0, (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t10 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(a);
         }
diff --git a/pkg/front_end/testcases/patterns/issue51770.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51770.dart.weak.transformed.expect
index 48092ce..11d2e14 100644
--- a/pkg/front_end/testcases/patterns/issue51770.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51770.dart.weak.transformed.expect
@@ -67,7 +67,7 @@
     synthesized core::bool #5#1#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t3 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t4 = a = #5#0.{core::List::sublist}(0, (#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t3 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t4 = a = #5#0.{core::List::sublist}(0, (#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(a);
         }
@@ -140,7 +140,7 @@
     synthesized core::bool #5#2#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t8 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #5#0{core::List<dynamic>}.{core::List::sublist}(0, (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t10 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t8 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #5#0{core::List<dynamic>}.{core::List::sublist}(0, (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t10 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(a);
         }
diff --git a/pkg/front_end/testcases/patterns/issue51771.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51771.dart.strong.transformed.expect
index ade4a95..b153238 100644
--- a/pkg/front_end/testcases/patterns/issue51771.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51771.dart.strong.transformed.expect
@@ -158,7 +158,7 @@
     synthesized core::bool #3#1#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t2 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t3 = a = #3#0.{core::List::sublist}(0, (#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t4 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t2 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t3 = a = #3#0.{core::List::sublist}(0, (#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t4 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(o);
         }
@@ -182,7 +182,7 @@
     synthesized core::int #5#1;
     synthesized core::bool #5#1#isSet = false;
     {
-      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0.{core::List::[]}((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t6 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0.{core::List::[]}((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t6 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
         {
           core::print(o);
         }
@@ -232,7 +232,7 @@
     synthesized core::bool #3#2#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t8 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #3#0{core::List<dynamic>}.{core::List::sublist}(0, (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t10 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t8 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #3#0{core::List<dynamic>}.{core::List::sublist}(0, (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t10 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(o{core::List<dynamic>});
         }
@@ -256,7 +256,7 @@
     synthesized core::int #5#2;
     synthesized core::bool #5#2#isSet = false;
     {
-      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t11 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0{core::List<dynamic>}.{core::List::[]}((#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t12 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t11 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0{core::List<dynamic>}.{core::List::[]}((#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t12 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
         {
           core::print(o{core::List<dynamic>});
         }
@@ -304,7 +304,7 @@
     synthesized core::int #3#2;
     synthesized core::bool #3#2#isSet = false;
     {
-      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t13 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && #3#0{core::List<dynamic>}.{core::List::[]}((#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t14 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::String) {
+      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t13 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && #3#0{core::List<dynamic>}.{core::List::[]}((#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t14 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::String) {
         {
           core::print(o{core::List<dynamic>});
         }
@@ -317,7 +317,7 @@
     synthesized core::int #4#2;
     synthesized core::bool #4#2#isSet = false;
     {
-      if(#4#0 is core::List<dynamic> && (#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool* #t15 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #4#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} is core::String && #4#0{core::List<dynamic>}.{core::List::[]}((#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool* #t16 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::int) {
+      if(#4#0 is core::List<dynamic> && (#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool #t15 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #4#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} is core::String && #4#0{core::List<dynamic>}.{core::List::[]}((#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool #t16 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::int) {
         {
           core::print(o{core::List<dynamic>});
         }
diff --git a/pkg/front_end/testcases/patterns/issue51771.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51771.dart.weak.transformed.expect
index ade4a95..b153238 100644
--- a/pkg/front_end/testcases/patterns/issue51771.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51771.dart.weak.transformed.expect
@@ -158,7 +158,7 @@
     synthesized core::bool #3#1#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t2 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t3 = a = #3#0.{core::List::sublist}(0, (#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t4 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t2 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t3 = a = #3#0.{core::List::sublist}(0, (#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t4 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(o);
         }
@@ -182,7 +182,7 @@
     synthesized core::int #5#1;
     synthesized core::bool #5#1#isSet = false;
     {
-      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0.{core::List::[]}((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool* #t6 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+      if((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t5 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0.{core::List::[]}((#5#1#isSet ?{core::int} #5#1{core::int} : let final core::bool #t6 = #5#1#isSet = true in #5#1 = #5#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
         {
           core::print(o);
         }
@@ -232,7 +232,7 @@
     synthesized core::bool #3#2#isSet = false;
     {
       hoisted core::List<dynamic> a;
-      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t8 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #3#0{core::List<dynamic>}.{core::List::sublist}(0, (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t10 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t8 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<dynamic> #t9 = a = #3#0{core::List<dynamic>}.{core::List::sublist}(0, (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t10 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           core::print(o{core::List<dynamic>});
         }
@@ -256,7 +256,7 @@
     synthesized core::int #5#2;
     synthesized core::bool #5#2#isSet = false;
     {
-      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t11 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0{core::List<dynamic>}.{core::List::[]}((#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool* #t12 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
+      if(#5#0 is core::List<dynamic> && (#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t11 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0{core::List<dynamic>}.{core::List::[]}((#5#2#isSet ?{core::int} #5#2{core::int} : let final core::bool #t12 = #5#2#isSet = true in #5#2 = #5#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) {
         {
           core::print(o{core::List<dynamic>});
         }
@@ -304,7 +304,7 @@
     synthesized core::int #3#2;
     synthesized core::bool #3#2#isSet = false;
     {
-      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t13 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && #3#0{core::List<dynamic>}.{core::List::[]}((#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool* #t14 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::String) {
+      if(#3#0 is core::List<dynamic> && (#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t13 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && #3#0{core::List<dynamic>}.{core::List::[]}((#3#2#isSet ?{core::int} #3#2{core::int} : let final core::bool #t14 = #3#2#isSet = true in #3#2 = #3#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::String) {
         {
           core::print(o{core::List<dynamic>});
         }
@@ -317,7 +317,7 @@
     synthesized core::int #4#2;
     synthesized core::bool #4#2#isSet = false;
     {
-      if(#4#0 is core::List<dynamic> && (#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool* #t15 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #4#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} is core::String && #4#0{core::List<dynamic>}.{core::List::[]}((#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool* #t16 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::int) {
+      if(#4#0 is core::List<dynamic> && (#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool #t15 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #4#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} is core::String && #4#0{core::List<dynamic>}.{core::List::[]}((#4#2#isSet ?{core::int} #4#2{core::int} : let final core::bool #t16 = #4#2#isSet = true in #4#2 = #4#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic} is core::int) {
         {
           core::print(o{core::List<dynamic>});
         }
diff --git a/pkg/front_end/testcases/patterns/issue51971_2.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51971_2.dart.strong.transformed.expect
index f6f5542..209b371 100644
--- a/pkg/front_end/testcases/patterns/issue51971_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51971_2.dart.strong.transformed.expect
@@ -163,7 +163,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t15 = i6 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t18 = n6 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t19 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t15 = i6 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t18 = n6 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t19 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t20 = i6;
@@ -182,7 +182,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i7 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t25 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t26 = n7 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t27 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i7 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t25 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t26 = n7 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t27 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t28 = i7;
diff --git a/pkg/front_end/testcases/patterns/issue51971_2.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51971_2.dart.weak.transformed.expect
index 7b5477f..6659e53 100644
--- a/pkg/front_end/testcases/patterns/issue51971_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue51971_2.dart.weak.transformed.expect
@@ -165,7 +165,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t15 = i6 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t18 = n6 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t19 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t15 = i6 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t16 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t18 = n6 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t19 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t20 = i6;
@@ -184,7 +184,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i7 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t25 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t26 = n7 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t27 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = i7 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t25 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t26 = n7 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t27 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t28 = i7;
diff --git a/pkg/front_end/testcases/patterns/issue52099.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue52099.dart.strong.transformed.expect
index 76a3e69..1a0068b 100644
--- a/pkg/front_end/testcases/patterns/issue52099.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52099.dart.strong.transformed.expect
@@ -31,7 +31,7 @@
     {
       {
         final hoisted core::int location;
-        if(#0#0 is self::FieldRef && (let final core::int #t2 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::FieldRef}.{self::FieldRef::location}{core::int} in true) || #0#0 is self::FuncRef && (let final core::int #t4 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{self::FuncRef}.{self::FuncRef::location}{core::int} in true) || #0#0 is self::ClassRef && (let final core::int #t6 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{self::ClassRef}.{self::ClassRef::location}{core::int} in true)) {
+        if(#0#0 is self::FieldRef && (let final core::int #t2 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::FieldRef}.{self::FieldRef::location}{core::int} in true) || #0#0 is self::FuncRef && (let final core::int #t4 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{self::FuncRef}.{self::FuncRef::location}{core::int} in true) || #0#0 is self::ClassRef && (let final core::int #t6 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{self::ClassRef}.{self::ClassRef::location}{core::int} in true)) {
           #t1 = location;
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue52099.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue52099.dart.weak.transformed.expect
index 2f69cf5..874e9d4 100644
--- a/pkg/front_end/testcases/patterns/issue52099.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52099.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
     {
       {
         final hoisted core::int location;
-        if(#0#0 is self::FieldRef && (let final core::int #t2 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::FieldRef}.{self::FieldRef::location}{core::int} in true) || #0#0 is self::FuncRef && (let final core::int #t4 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{self::FuncRef}.{self::FuncRef::location}{core::int} in true) || #0#0 is self::ClassRef && (let final core::int #t6 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{self::ClassRef}.{self::ClassRef::location}{core::int} in true)) {
+        if(#0#0 is self::FieldRef && (let final core::int #t2 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::FieldRef}.{self::FieldRef::location}{core::int} in true) || #0#0 is self::FuncRef && (let final core::int #t4 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{self::FuncRef}.{self::FuncRef::location}{core::int} in true) || #0#0 is self::ClassRef && (let final core::int #t6 = location = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{self::ClassRef}.{self::ClassRef::location}{core::int} in true)) {
           #t1 = location;
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue52192.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue52192.dart.strong.transformed.expect
index f5e2156..b596a3d 100644
--- a/pkg/front_end/testcases/patterns/issue52192.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52192.dart.strong.transformed.expect
@@ -24,7 +24,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted (core::num) → void f;
-      if(#0#0 is self::B && (let final (core::int) → void #t3 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::B::g}{(core::int) → void} in true) && (let final (core::num) → void #t5 = f = (#0#2#isSet ?{(core::num) → void} #0#2{(core::num) → void} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::A::g}{(core::num) → void}) as{CovarianceCheck} (core::num) → void in true)) {
+      if(#0#0 is self::B && (let final (core::int) → void #t3 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::B::g}{(core::int) → void} in true) && (let final (core::num) → void #t5 = f = (#0#2#isSet ?{(core::num) → void} #0#2{(core::num) → void} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::A::g}{(core::num) → void}) as{CovarianceCheck} (core::num) → void in true)) {
         {
           f(value){(core::num) → void};
         }
diff --git a/pkg/front_end/testcases/patterns/issue52192.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue52192.dart.weak.transformed.expect
index f5e2156..b596a3d 100644
--- a/pkg/front_end/testcases/patterns/issue52192.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52192.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted (core::num) → void f;
-      if(#0#0 is self::B && (let final (core::int) → void #t3 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::B::g}{(core::int) → void} in true) && (let final (core::num) → void #t5 = f = (#0#2#isSet ?{(core::num) → void} #0#2{(core::num) → void} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::A::g}{(core::num) → void}) as{CovarianceCheck} (core::num) → void in true)) {
+      if(#0#0 is self::B && (let final (core::int) → void #t3 = #0#2#isSet ?{(core::int) → void} #0#2{(core::int) → void} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::B::g}{(core::int) → void} in true) && (let final (core::num) → void #t5 = f = (#0#2#isSet ?{(core::num) → void} #0#2{(core::num) → void} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{self::B}.{self::A::g}{(core::num) → void}) as{CovarianceCheck} (core::num) → void in true)) {
         {
           f(value){(core::num) → void};
         }
diff --git a/pkg/front_end/testcases/patterns/issue52345.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue52345.dart.strong.transformed.expect
index 1139187..e84b452 100644
--- a/pkg/front_end/testcases/patterns/issue52345.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52345.dart.strong.transformed.expect
@@ -23,8 +23,8 @@
               final hoisted core::String b;
               final hoisted core::String d;
               final hoisted core::List<core::String> x;
-              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool}) {
-                b = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
+              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool}) {
+                b = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
                 d = #0#0.{core::List::[]}(1){(core::int) → core::String};
                 x = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::String>};
                 #t1 = core::print("${b} ${d} ${x}");
@@ -34,8 +34,8 @@
             {
               final hoisted core::String f;
               final hoisted core::List<core::String> args;
-              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
-                f = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
+              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+                f = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
                 args = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::String>};
                 #t1 = core::print("${f} ${args}");
                 break #L1;
diff --git a/pkg/front_end/testcases/patterns/issue52345.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue52345.dart.weak.transformed.expect
index c112e0e..3746e04 100644
--- a/pkg/front_end/testcases/patterns/issue52345.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52345.dart.weak.transformed.expect
@@ -24,8 +24,8 @@
               final hoisted core::String b;
               final hoisted core::String d;
               final hoisted core::List<core::String> x;
-              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool}) {
-                b = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
+              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool}) {
+                b = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
                 d = #0#0.{core::List::[]}(1){(core::int) → core::String};
                 x = #0#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::String>};
                 #t1 = core::print("${b} ${d} ${x}");
@@ -35,8 +35,8 @@
             {
               final hoisted core::String f;
               final hoisted core::List<core::String> args;
-              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
-                f = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
+              if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) {
+                f = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::String};
                 args = #0#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::String>};
                 #t1 = core::print("${f} ${args}");
                 break #L1;
diff --git a/pkg/front_end/testcases/patterns/issue52941.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue52941.dart.strong.transformed.expect
index f4452b4..c8e87ce 100644
--- a/pkg/front_end/testcases/patterns/issue52941.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52941.dart.strong.transformed.expect
@@ -52,7 +52,7 @@
     synthesized core::bool #2#1#isSet = false;
     {
       hoisted core::List<core::int> rest;
-      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t5 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t6 = rest = #2#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t5 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t6 = rest = #2#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(null, rest);
           break #L3;
@@ -61,7 +61,7 @@
     }
     {
       hoisted core::List<core::int> all;
-      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t8 = all = #2#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t8 = all = #2#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(core::_GrowableList::_literal2<dynamic>(2, 3), all);
         }
@@ -75,7 +75,7 @@
     synthesized core::bool #3#1#isSet = false;
     {
       hoisted core::List<core::int> all;
-      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t9 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t10 = all = #3#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t9 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t10 = all = #3#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(core::_GrowableList::_literal2<dynamic>(2, 3), all);
           break #L4;
@@ -84,7 +84,7 @@
     }
     {
       hoisted core::List<core::int> rest;
-      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t11 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t12 = rest = #3#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t11 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t12 = rest = #3#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(null, rest);
         }
diff --git a/pkg/front_end/testcases/patterns/issue52941.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue52941.dart.weak.transformed.expect
index f4452b4..c8e87ce 100644
--- a/pkg/front_end/testcases/patterns/issue52941.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52941.dart.weak.transformed.expect
@@ -52,7 +52,7 @@
     synthesized core::bool #2#1#isSet = false;
     {
       hoisted core::List<core::int> rest;
-      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t5 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t6 = rest = #2#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t5 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t6 = rest = #2#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(null, rest);
           break #L3;
@@ -61,7 +61,7 @@
     }
     {
       hoisted core::List<core::int> all;
-      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool* #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t8 = all = #2#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#2#1#isSet ?{core::int} #2#1{core::int} : let final core::bool #t7 = #2#1#isSet = true in #2#1 = #2#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t8 = all = #2#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(core::_GrowableList::_literal2<dynamic>(2, 3), all);
         }
@@ -75,7 +75,7 @@
     synthesized core::bool #3#1#isSet = false;
     {
       hoisted core::List<core::int> all;
-      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t9 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t10 = all = #3#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t9 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::List<core::int> #t10 = all = #3#0.{core::List::sublist}(1){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(core::_GrowableList::_literal2<dynamic>(2, 3), all);
           break #L4;
@@ -84,7 +84,7 @@
     }
     {
       hoisted core::List<core::int> rest;
-      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool* #t11 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t12 = rest = #3#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
+      if((#3#1#isSet ?{core::int} #3#1{core::int} : let final core::bool #t11 = #3#1#isSet = true in #3#1 = #3#0.{core::List::length}{core::int}).{core::num::>=}(#C3){(core::num) → core::bool} && #C2 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(0){(core::int) → core::int} && #C4 =={core::num::==}{(core::Object) → core::bool} #3#0.{core::List::[]}(1){(core::int) → core::int} && (let final core::List<core::int> #t12 = rest = #3#0.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<core::int>} in true)) {
         {
           self::expect(null, rest);
         }
diff --git a/pkg/front_end/testcases/patterns/issue52960b.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue52960b.dart.strong.transformed.expect
index a39cb80..901b3b8 100644
--- a/pkg/front_end/testcases/patterns/issue52960b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52960b.dart.strong.transformed.expect
@@ -64,12 +64,12 @@
     synthesized core::bool #0#4#isSet = false;
     synthesized(core::int, core::int) #0#7;
     synthesized core::bool #0#7#isSet = false;
-    a = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool* #t1 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$1{core::int};
-    b = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$2{core::int};
-    c = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$1{core::int};
-    d = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$2{core::int};
-    e = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$1{core::int};
-    f = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool* #t6 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$2{core::int};
+    a = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool #t1 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$1{core::int};
+    b = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$2{core::int};
+    c = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$1{core::int};
+    d = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$2{core::int};
+    e = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$1{core::int};
+    f = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$2{core::int};
   }
   {
     final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #1#0 = ((a, b), (c, d), (e, f));
@@ -79,12 +79,12 @@
     synthesized core::bool #1#4#isSet = false;
     synthesized(core::int, core::int) #1#7;
     synthesized core::bool #1#7#isSet = false;
-    b = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool* #t7 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$1{core::int};
-    d = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool* #t8 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$2{core::int};
-    f = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool* #t9 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$1{core::int};
-    a = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool* #t10 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$2{core::int};
-    c = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool* #t11 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$1{core::int};
-    e = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool* #t12 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$2{core::int};
+    b = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool #t7 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$1{core::int};
+    d = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool #t8 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$2{core::int};
+    f = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool #t9 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$1{core::int};
+    a = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool #t10 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$2{core::int};
+    c = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool #t11 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$1{core::int};
+    e = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool #t12 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$2{core::int};
   }
   {
     final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #2#0 = ((a, b), (c, d), (e, f));
@@ -94,12 +94,12 @@
     synthesized core::bool #2#4#isSet = false;
     synthesized(core::int, core::int) #2#7;
     synthesized core::bool #2#7#isSet = false;
-    b = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool* #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$1{core::int};
-    d = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool* #t14 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$2{core::int};
-    f = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool* #t15 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$1{core::int};
-    a = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool* #t16 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$2{core::int};
-    c = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool* #t17 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$1{core::int};
-    e = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool* #t18 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$2{core::int};
+    b = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$1{core::int};
+    d = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool #t14 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$2{core::int};
+    f = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool #t15 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$1{core::int};
+    a = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool #t16 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$2{core::int};
+    c = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool #t17 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$1{core::int};
+    e = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool #t18 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$2{core::int};
   }
   {
     final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #3#0 = ((a, b), (c, d), (e, f));
@@ -109,12 +109,12 @@
     synthesized core::bool #3#4#isSet = false;
     synthesized(core::int, core::int) #3#7;
     synthesized core::bool #3#7#isSet = false;
-    b = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool* #t19 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$1{core::int};
-    d = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool* #t20 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$2{core::int};
-    f = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool* #t21 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$1{core::int};
-    a = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool* #t22 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$2{core::int};
-    c = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool* #t23 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$1{core::int};
-    e = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool* #t24 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$2{core::int};
+    b = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool #t19 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$1{core::int};
+    d = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool #t20 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$2{core::int};
+    f = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool #t21 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$1{core::int};
+    a = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool #t22 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$2{core::int};
+    c = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool #t23 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$1{core::int};
+    e = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool #t24 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$2{core::int};
   }
   return ((a, b), (c, d), (e, f));
 }
diff --git a/pkg/front_end/testcases/patterns/issue52960b.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue52960b.dart.weak.transformed.expect
index a39cb80..901b3b8 100644
--- a/pkg/front_end/testcases/patterns/issue52960b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue52960b.dart.weak.transformed.expect
@@ -64,12 +64,12 @@
     synthesized core::bool #0#4#isSet = false;
     synthesized(core::int, core::int) #0#7;
     synthesized core::bool #0#7#isSet = false;
-    a = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool* #t1 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$1{core::int};
-    b = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$2{core::int};
-    c = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$1{core::int};
-    d = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$2{core::int};
-    e = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$1{core::int};
-    f = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool* #t6 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$2{core::int};
+    a = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool #t1 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$1{core::int};
+    b = (#0#1#isSet ?{(core::int, core::int)} #0#1{(core::int, core::int)} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{(core::int, core::int)}).$2{core::int};
+    c = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$1{core::int};
+    d = (#0#4#isSet ?{(core::int, core::int)} #0#4{(core::int, core::int)} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0.$2{(core::int, core::int)}).$2{core::int};
+    e = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$1{core::int};
+    f = (#0#7#isSet ?{(core::int, core::int)} #0#7{(core::int, core::int)} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0.$3{(core::int, core::int)}).$2{core::int};
   }
   {
     final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #1#0 = ((a, b), (c, d), (e, f));
@@ -79,12 +79,12 @@
     synthesized core::bool #1#4#isSet = false;
     synthesized(core::int, core::int) #1#7;
     synthesized core::bool #1#7#isSet = false;
-    b = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool* #t7 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$1{core::int};
-    d = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool* #t8 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$2{core::int};
-    f = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool* #t9 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$1{core::int};
-    a = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool* #t10 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$2{core::int};
-    c = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool* #t11 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$1{core::int};
-    e = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool* #t12 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$2{core::int};
+    b = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool #t7 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$1{core::int};
+    d = (#1#1#isSet ?{(core::int, core::int)} #1#1{(core::int, core::int)} : let final core::bool #t8 = #1#1#isSet = true in #1#1 = #1#0.$1{(core::int, core::int)}).$2{core::int};
+    f = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool #t9 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$1{core::int};
+    a = (#1#4#isSet ?{(core::int, core::int)} #1#4{(core::int, core::int)} : let final core::bool #t10 = #1#4#isSet = true in #1#4 = #1#0.$2{(core::int, core::int)}).$2{core::int};
+    c = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool #t11 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$1{core::int};
+    e = (#1#7#isSet ?{(core::int, core::int)} #1#7{(core::int, core::int)} : let final core::bool #t12 = #1#7#isSet = true in #1#7 = #1#0.$3{(core::int, core::int)}).$2{core::int};
   }
   {
     final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #2#0 = ((a, b), (c, d), (e, f));
@@ -94,12 +94,12 @@
     synthesized core::bool #2#4#isSet = false;
     synthesized(core::int, core::int) #2#7;
     synthesized core::bool #2#7#isSet = false;
-    b = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool* #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$1{core::int};
-    d = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool* #t14 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$2{core::int};
-    f = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool* #t15 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$1{core::int};
-    a = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool* #t16 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$2{core::int};
-    c = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool* #t17 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$1{core::int};
-    e = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool* #t18 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$2{core::int};
+    b = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool #t13 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$1{core::int};
+    d = (#2#1#isSet ?{(core::int, core::int)} #2#1{(core::int, core::int)} : let final core::bool #t14 = #2#1#isSet = true in #2#1 = #2#0.$1{(core::int, core::int)}).$2{core::int};
+    f = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool #t15 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$1{core::int};
+    a = (#2#4#isSet ?{(core::int, core::int)} #2#4{(core::int, core::int)} : let final core::bool #t16 = #2#4#isSet = true in #2#4 = #2#0.$2{(core::int, core::int)}).$2{core::int};
+    c = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool #t17 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$1{core::int};
+    e = (#2#7#isSet ?{(core::int, core::int)} #2#7{(core::int, core::int)} : let final core::bool #t18 = #2#7#isSet = true in #2#7 = #2#0.$3{(core::int, core::int)}).$2{core::int};
   }
   {
     final synthesized((core::int, core::int), (core::int, core::int), (core::int, core::int)) #3#0 = ((a, b), (c, d), (e, f));
@@ -109,12 +109,12 @@
     synthesized core::bool #3#4#isSet = false;
     synthesized(core::int, core::int) #3#7;
     synthesized core::bool #3#7#isSet = false;
-    b = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool* #t19 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$1{core::int};
-    d = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool* #t20 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$2{core::int};
-    f = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool* #t21 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$1{core::int};
-    a = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool* #t22 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$2{core::int};
-    c = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool* #t23 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$1{core::int};
-    e = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool* #t24 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$2{core::int};
+    b = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool #t19 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$1{core::int};
+    d = (#3#1#isSet ?{(core::int, core::int)} #3#1{(core::int, core::int)} : let final core::bool #t20 = #3#1#isSet = true in #3#1 = #3#0.$1{(core::int, core::int)}).$2{core::int};
+    f = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool #t21 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$1{core::int};
+    a = (#3#4#isSet ?{(core::int, core::int)} #3#4{(core::int, core::int)} : let final core::bool #t22 = #3#4#isSet = true in #3#4 = #3#0.$2{(core::int, core::int)}).$2{core::int};
+    c = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool #t23 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$1{core::int};
+    e = (#3#7#isSet ?{(core::int, core::int)} #3#7{(core::int, core::int)} : let final core::bool #t24 = #3#7#isSet = true in #3#7 = #3#0.$3{(core::int, core::int)}).$2{core::int};
   }
   return ((a, b), (c, d), (e, f));
 }
diff --git a/pkg/front_end/testcases/patterns/issue53804.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue53804.dart.strong.transformed.expect
index 99bfaef..8abb9b5 100644
--- a/pkg/front_end/testcases/patterns/issue53804.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue53804.dart.strong.transformed.expect
@@ -24,21 +24,21 @@
         {
           final hoisted core::int? f1;
           if(true) {
-            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
+            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
             #t1 = "${f1}";
             break #L1;
           }
         }
         {
           final hoisted core::double? f2;
-          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
-            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
+          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
+            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
             #t1 = "${f2}";
             break #L1;
           }
         }
         {
-          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
+          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
             #t1 = "?";
             break #L1;
           }
diff --git a/pkg/front_end/testcases/patterns/issue53804.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue53804.dart.weak.transformed.expect
index a70471a..cb575f4 100644
--- a/pkg/front_end/testcases/patterns/issue53804.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue53804.dart.weak.transformed.expect
@@ -25,21 +25,21 @@
         {
           final hoisted core::int? f1;
           if(true) {
-            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
+            f1 = #0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t2 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?};
             #t1 = "${f1}";
             break #L1;
           }
         }
         {
           final hoisted core::double? f2;
-          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
-            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
+          if(#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t4 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) {
+            f2 = #0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?};
             #t1 = "${f2}";
             break #L1;
           }
         }
         {
-          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool* #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
+          if((#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = (#0#1#isSet ?{core::int?} #0#1{core::int?} : let final core::bool #t7 = #0#1#isSet = true in #0#1 = #0#0.$1{core::int?}) == null) && (#0#2#isSet ?{core::double?} #0#2{core::double?} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double?}) == null) {
             #t1 = "?";
             break #L1;
           }
diff --git a/pkg/front_end/testcases/patterns/issue55310.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue55310.dart.strong.transformed.expect
index f258838..72c15d5 100644
--- a/pkg/front_end/testcases/patterns/issue55310.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue55310.dart.strong.transformed.expect
@@ -47,28 +47,28 @@
     {
       {
         final hoisted self::Other other;
-        if(#0#0 is self::WrapperA && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
-          other = let self::Other? #t3 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t3 == null ?{self::Other} #t3 as{Unchecked} self::Other : #t3{self::Other};
+        if(#0#0 is self::WrapperA && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
+          other = let self::Other? #t3 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t3 == null ?{self::Other} #t3 as{Unchecked} self::Other : #t3{self::Other};
           #t1 = other.{self::Other::text}{core::String};
           break #L1;
         }
       }
       {
-        if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool* #t5 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
+        if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t5 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
           #t1 = "no other";
           break #L1;
         }
       }
       {
         final hoisted self::Other other;
-        if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
-          other = let self::Other? #t8 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t8 == null ?{self::Other} #t8 as{Unchecked} self::Other : #t8{self::Other};
+        if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
+          other = let self::Other? #t8 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t8 == null ?{self::Other} #t8 as{Unchecked} self::Other : #t8{self::Other};
           #t1 = other.{self::Other::text}{core::String};
           break #L1;
         }
       }
       {
-        if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool* #t10 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
+        if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t10 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
           #t1 = "no other";
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect
index ef269ad..9b249ca 100644
--- a/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/issue55310.dart.weak.transformed.expect
@@ -48,28 +48,28 @@
     {
       {
         final hoisted self::Other other;
-        if(#0#0 is self::WrapperA && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
-          other = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t3 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) as{Unchecked} self::Other;
+        if(#0#0 is self::WrapperA && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
+          other = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t3 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) as{Unchecked} self::Other;
           #t1 = other.{self::Other::text}{core::String};
           break #L1;
         }
       }
       {
-        if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool* #t4 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
+        if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t4 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
           #t1 = "no other";
           break #L1;
         }
       }
       {
         final hoisted self::Other other;
-        if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
-          other = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) as{Unchecked} self::Other;
+        if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) {
+          other = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) as{Unchecked} self::Other;
           #t1 = other.{self::Other::text}{core::String};
           break #L1;
         }
       }
       {
-        if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool* #t8 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
+        if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool #t8 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) {
           #t1 = "no other";
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.strong.transformed.expect
index 7336692..baa989a 100644
--- a/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
     {
       hoisted core::String? a;
       hoisted core::String b;
-      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t1 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t2 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && ((let core::String? #t3 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t4 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t3 == null ?{core::String} #t3 as{Unchecked} core::String : #t3{core::String}) is core::String && (let final core::String #t5 = b = let core::String? #t6 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t7 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t6 == null ?{core::String} #t6 as{Unchecked} core::String : #t6{core::String} in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
+      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t1 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t2 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && ((let core::String? #t3 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t4 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t3 == null ?{core::String} #t3 as{Unchecked} core::String : #t3{core::String}) is core::String && (let final core::String #t5 = b = let core::String? #t6 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t7 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t6 == null ?{core::String} #t6 as{Unchecked} core::String : #t6{core::String} in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
         return 1;
       }
     }
@@ -30,7 +30,7 @@
     {
       hoisted core::String a;
       hoisted core::String? b;
-      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t8 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<core::String?> && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t9 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool* #t10 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t11 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t12 = a = let core::String? #t13 = #2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool* #t14 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t15 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?} in #t13 == null ?{core::String} #t13 as{Unchecked} core::String : #t13{core::String} in true)) && (let final core::String? #t16 = b = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t17 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
+      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t8 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<core::String?> && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t9 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t10 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t11 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t12 = a = let core::String? #t13 = #2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t14 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t15 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?} in #t13 == null ?{core::String} #t13 as{Unchecked} core::String : #t13{core::String} in true)) && (let final core::String? #t16 = b = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t17 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
         return 2;
       }
     }
@@ -45,8 +45,8 @@
     synthesized core::bool #3#16#isSet = false;
     {
       hoisted dynamic a;
-      if(#3#0 is core::List<dynamic> && #3#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t18 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t19 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t20 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t21 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t22 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t23 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool* #t24 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t25 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t26 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) == null)))) {
-        a = #3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool* #t27 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t28 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t29 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic};
+      if(#3#0 is core::List<dynamic> && #3#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t18 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t19 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t20 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t21 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t22 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t23 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t24 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t25 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t26 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) == null)))) {
+        a = #3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t27 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t28 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t29 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic};
         {
           return 3;
         }
@@ -74,7 +74,7 @@
     {
       hoisted core::String? a;
       hoisted core::String b;
-      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t30 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t31 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && ((let core::String? #t32 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t33 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t32 == null ?{core::String} #t32 as{Unchecked} core::String : #t32{core::String}) is core::String && (let final core::String #t34 = b = let core::String? #t35 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t36 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t35 == null ?{core::String} #t35 as{Unchecked} core::String : #t35{core::String} in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
+      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t30 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t31 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && ((let core::String? #t32 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t33 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t32 == null ?{core::String} #t32 as{Unchecked} core::String : #t32{core::String}) is core::String && (let final core::String #t34 = b = let core::String? #t35 = #1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t36 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?} in #t35 == null ?{core::String} #t35 as{Unchecked} core::String : #t35{core::String} in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
         return 1;
       }
     }
@@ -88,7 +88,7 @@
     {
       hoisted core::String a;
       hoisted core::String? b;
-      if(#2#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t37 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::String?> && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t38 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool* #t39 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t40 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t41 = a = let core::String? #t42 = #2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool* #t43 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t44 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?} in #t42 == null ?{core::String} #t42 as{Unchecked} core::String : #t42{core::String} in true)) && (let final core::String? #t45 = b = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t46 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::Object?}) {
+      if(#2#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t37 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::String?> && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t38 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t39 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t40 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t41 = a = let core::String? #t42 = #2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t43 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t44 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?} in #t42 == null ?{core::String} #t42 as{Unchecked} core::String : #t42{core::String} in true)) && (let final core::String? #t45 = b = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t46 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::Object?}) {
         return 2;
       }
     }
@@ -103,8 +103,8 @@
     synthesized core::bool #3#14#isSet = false;
     {
       hoisted core::Object a;
-      if(#3#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t47 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t48 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t49 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t50 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t51 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t52 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool* #t53 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t54 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t55 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) == null)))) {
-        a = let core::Object? #t56 = #3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool* #t57 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t58 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t59 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?} in #t56 == null ?{core::Object} #t56 as{Unchecked} core::Object : #t56{core::Object};
+      if(#3#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t47 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t48 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t49 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t50 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t51 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t52 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t53 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t54 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t55 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) == null)))) {
+        a = let core::Object? #t56 = #3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t57 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t58 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t59 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?} in #t56 == null ?{core::Object} #t56 as{Unchecked} core::Object : #t56{core::Object};
         {
           return 3;
         }
diff --git a/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect
index 854e48c..d648125 100644
--- a/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/list_pattern_inside_if_case.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
     {
       hoisted core::String? a;
       hoisted core::String b;
-      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t1 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t2 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && (((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t3 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String) is core::String && (let final core::String #t4 = b = (#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t5 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
+      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t1 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t2 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && (((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t3 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String) is core::String && (let final core::String #t4 = b = (#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t5 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
         return 1;
       }
     }
@@ -30,7 +30,7 @@
     {
       hoisted core::String a;
       hoisted core::String? b;
-      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t6 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<core::String?> && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool* #t8 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t9 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t10 = a = (#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool* #t11 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t12 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) as{Unchecked} core::String in true)) && (let final core::String? #t13 = b = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool* #t14 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
+      if(#2#0 is core::List<dynamic> && #2#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t6 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<core::String?> && ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t7 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t8 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t9 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t10 = a = (#2#11#isSet ?{core::String?} #2#11{core::String?} : let final core::bool #t11 = #2#11#isSet = true in #2#11 = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t12 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) as{Unchecked} core::String in true)) && (let final core::String? #t13 = b = ((#2#6#isSet ?{dynamic} #2#6{dynamic} : let final core::bool #t14 = #2#6#isSet = true in #2#6 = #2#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) {
         return 2;
       }
     }
@@ -45,8 +45,8 @@
     synthesized core::bool #3#16#isSet = false;
     {
       hoisted dynamic a;
-      if(#3#0 is core::List<dynamic> && #3#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t15 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t16 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t17 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t18 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t19 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t20 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool* #t21 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t22 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t23 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) == null)))) {
-        a = #3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool* #t24 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool* #t25 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool* #t26 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic};
+      if(#3#0 is core::List<dynamic> && #3#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t15 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t16 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t17 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t18 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t19 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t20 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t21 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t22 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t23 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) == null)))) {
+        a = #3#16#isSet ?{dynamic} #3#16{dynamic} : let final core::bool #t24 = #3#16#isSet = true in #3#16 = ((#3#11#isSet ?{dynamic} #3#11{dynamic} : let final core::bool #t25 = #3#11#isSet = true in #3#11 = ((#3#6#isSet ?{dynamic} #3#6{dynamic} : let final core::bool #t26 = #3#6#isSet = true in #3#6 = #3#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic};
         {
           return 3;
         }
@@ -74,7 +74,7 @@
     {
       hoisted core::String? a;
       hoisted core::String b;
-      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t27 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t28 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && (((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t29 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String) is core::String && (let final core::String #t30 = b = (#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool* #t31 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
+      if(#1#0 is core::List<core::String?> && #1#0{core::List<core::String?>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::String? #t27 = a = #1#0{core::List<core::String?>}.{core::List::[]}(0){(core::int) → core::String?} in true) && (!((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t28 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) == null) && (((#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t29 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String) is core::String && (let final core::String #t30 = b = (#1#7#isSet ?{core::String?} #1#7{core::String?} : let final core::bool #t31 = #1#7#isSet = true in #1#7 = #1#0{core::List<core::String?>}.{core::List::[]}(1){(core::int) → core::String?}) as{Unchecked} core::String in true))) && #1#0{core::List<core::String?>}.{core::List::[]}(2){(core::int) → core::String?} =={core::String::==}{(core::Object) → core::bool} #C4) {
         return 1;
       }
     }
@@ -88,7 +88,7 @@
     {
       hoisted core::String a;
       hoisted core::String? b;
-      if(#2#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t32 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::String?> && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t33 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool* #t34 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t35 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t36 = a = (#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool* #t37 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t38 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) as{Unchecked} core::String in true)) && (let final core::String? #t39 = b = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool* #t40 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::Object?}) {
+      if(#2#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t32 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::String?> && ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t33 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3 && (!((#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t34 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t35 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) == null) && (let final core::String #t36 = a = (#2#9#isSet ?{core::String?} #2#9{core::String?} : let final core::bool #t37 = #2#9#isSet = true in #2#9 = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t38 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(0){(core::int) → core::String?}) as{Unchecked} core::String in true)) && (let final core::String? #t39 = b = ((#2#4#isSet ?{core::Object?} #2#4{core::Object?} : let final core::bool #t40 = #2#4#isSet = true in #2#4 = #2#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::String?>).{core::List::[]}(1){(core::int) → core::String?} in true)) && #C5 =={core::num::==}{(core::Object) → core::bool} #2#0.{core::List::[]}(1){(core::int) → core::Object?}) {
         return 2;
       }
     }
@@ -103,8 +103,8 @@
     synthesized core::bool #3#14#isSet = false;
     {
       hoisted core::Object a;
-      if(#3#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t41 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t42 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t43 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t44 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t45 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t46 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool* #t47 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t48 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t49 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) == null)))) {
-        a = (#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool* #t50 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool* #t51 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t52 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::Object;
+      if(#3#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t41 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t42 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t43 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t44 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) is core::List<core::Object?> && ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t45 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t46 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && !((#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t47 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t48 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t49 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) == null)))) {
+        a = (#3#14#isSet ?{core::Object?} #3#14{core::Object?} : let final core::bool #t50 = #3#14#isSet = true in #3#14 = ((#3#9#isSet ?{core::Object?} #3#9{core::Object?} : let final core::bool #t51 = #3#9#isSet = true in #3#9 = ((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t52 = #3#4#isSet = true in #3#4 = #3#0.{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::List<core::Object?>).{core::List::[]}(0){(core::int) → core::Object?}) as{Unchecked} core::Object;
         {
           return 3;
         }
diff --git a/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.strong.transformed.expect
index 06d86c0..df89b6b 100644
--- a/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.strong.transformed.expect
@@ -39,7 +39,7 @@
     {
       lowered hoisted core::int x#case#0;
       lowered hoisted core::int x#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = x#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t8 = x#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t9 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = x#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t8 = x#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t9 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))) {
         {
           core::String x = "foo";
           return x;
diff --git a/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.weak.transformed.expect
index 06d86c0..df89b6b 100644
--- a/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/local_shadows_pattern.dart.weak.transformed.expect
@@ -39,7 +39,7 @@
     {
       lowered hoisted core::int x#case#0;
       lowered hoisted core::int x#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = x#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t8 = x#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t9 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = x#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t8 = x#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t9 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))) {
         {
           core::String x = "foo";
           return x;
diff --git a/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.strong.transformed.expect
index b1a2b5e..160451d 100644
--- a/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.strong.transformed.expect
@@ -31,7 +31,7 @@
     synthesized core::bool #0#7#isSet = false;
     {
       hoisted invalid-type y;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t6 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t7 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t7 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
         return y;
       }
       else {
@@ -62,7 +62,7 @@
     synthesized core::bool #0#7#isSet = false;
     {
       hoisted invalid-type y;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t11 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t15 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t18 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::bool && (let final invalid-type #t19 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t20 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t11 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t15 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t18 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::bool && (let final invalid-type #t19 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t20 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
         return y;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.weak.transformed.expect
index b1a2b5e..160451d 100644
--- a/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/logical_or_inside_if_case.dart.weak.transformed.expect
@@ -31,7 +31,7 @@
     synthesized core::bool #0#7#isSet = false;
     {
       hoisted invalid-type y;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t6 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t7 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t7 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
         return y;
       }
       else {
@@ -62,7 +62,7 @@
     synthesized core::bool #0#7#isSet = false;
     {
       hoisted invalid-type y;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t11 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t15 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t18 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::bool && (let final invalid-type #t19 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t20 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t10 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final invalid-type #t11 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final invalid-type #t15 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C3) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t18 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::bool && (let final invalid-type #t19 = y = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t20 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} invalid-type in true))) {
         return y;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/map_lookup.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_lookup.dart.strong.transformed.expect
index 1051685..e189577 100644
--- a/pkg/front_end/testcases/patterns/map_lookup.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_lookup.dart.strong.transformed.expect
@@ -69,14 +69,14 @@
     synthesized core::bool #0#8;
     synthesized core::bool #0#8#isSet = false;
     {
-      if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t4 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t4 == null ?{core::int} #t4 as{Unchecked} core::int : #t4{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t6 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t7 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t8 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t9 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t8 == null ?{core::int} #t8 as{Unchecked} core::int : #t8{core::int})) {
+      if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t4 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t4 == null ?{core::int} #t4 as{Unchecked} core::int : #t4{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t6 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t7 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t8 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t9 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t8 == null ?{core::int} #t8 as{Unchecked} core::int : #t8{core::int})) {
         {
           return "match-2";
         }
       }
     }
     {
-      if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t13 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t14 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t13 == null ?{core::int} #t13 as{Unchecked} core::int : #t13{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t15 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t16 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C9 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t17 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t18 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t17 == null ?{core::int} #t17 as{Unchecked} core::int : #t17{core::int})) {
+      if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t13 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t14 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t13 == null ?{core::int} #t13 as{Unchecked} core::int : #t13{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t15 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t16 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C9 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t17 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t18 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t17 == null ?{core::int} #t17 as{Unchecked} core::int : #t17{core::int})) {
         {
           return "match-3";
         }
@@ -108,13 +108,13 @@
     #L2:
     {
       {
-        if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t20 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t21 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t23 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t24 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t23 == null ?{core::int} #t23 as{Unchecked} core::int : #t23{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t25 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t26 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t27 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t28 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t27 == null ?{core::int} #t27 as{Unchecked} core::int : #t27{core::int})) {
+        if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t20 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t21 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t23 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t24 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t23 == null ?{core::int} #t23 as{Unchecked} core::int : #t23{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t25 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t26 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t27 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t28 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t27 == null ?{core::int} #t27 as{Unchecked} core::int : #t27{core::int})) {
           #t19 = "match-2";
           break #L2;
         }
       }
       {
-        if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t29 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t30 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t31 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t32 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t33 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t32 == null ?{core::int} #t32 as{Unchecked} core::int : #t32{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t34 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t35 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C9 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t36 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t37 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t36 == null ?{core::int} #t36 as{Unchecked} core::int : #t36{core::int})) {
+        if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t29 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t30 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t31 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t32 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t33 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t32 == null ?{core::int} #t32 as{Unchecked} core::int : #t32{core::int})) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t34 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t35 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool})) && #C9 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t36 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t37 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?} in #t36 == null ?{core::int} #t36 as{Unchecked} core::int : #t36{core::int})) {
           #t19 = "match-3";
           break #L2;
         }
@@ -143,7 +143,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::int? #0#6;
     synthesized core::bool #0#6#isSet = false;
-    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t38 = #0#3#isSet = true in #0#3 = #0#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t39 = x1 = let core::int? #t40 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t41 = #0#3#isSet = true in #0#3 = #0#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} in #t40 == null ?{core::int} #t40 as{Unchecked} core::int : #t40{core::int} in true) && (!((#0#6#isSet ?{core::int?} #0#6{core::int?} : let final core::bool* #t42 = #0#6#isSet = true in #0#6 = #0#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool}) && (let final core::int #t43 = x2 = let core::int? #t44 = #0#6#isSet ?{core::int?} #0#6{core::int?} : let final core::bool* #t45 = #0#6#isSet = true in #0#6 = #0#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} in #t44 == null ?{core::int} #t44 as{Unchecked} core::int : #t44{core::int} in true)))
+    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t38 = #0#3#isSet = true in #0#3 = #0#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t39 = x1 = let core::int? #t40 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t41 = #0#3#isSet = true in #0#3 = #0#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} in #t40 == null ?{core::int} #t40 as{Unchecked} core::int : #t40{core::int} in true) && (!((#0#6#isSet ?{core::int?} #0#6{core::int?} : let final core::bool #t42 = #0#6#isSet = true in #0#6 = #0#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool}) && (let final core::int #t43 = x2 = let core::int? #t44 = #0#6#isSet ?{core::int?} #0#6{core::int?} : let final core::bool #t45 = #0#6#isSet = true in #0#6 = #0#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} in #t44 == null ?{core::int} #t44 as{Unchecked} core::int : #t44{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   self::expect(self::hasUnsoundNullSafety ?{core::String} self::unsoundResult : self::soundResult, map.{self::MyMap::log}{core::String});
@@ -156,7 +156,7 @@
     synthesized core::bool #1#3#isSet = false;
     synthesized core::int? #1#6;
     synthesized core::bool #1#6#isSet = false;
-    if(!((!((#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t46 = #1#3#isSet = true in #1#3 = #1#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && #1#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t47 = y1 = let core::int? #t48 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool* #t49 = #1#3#isSet = true in #1#3 = #1#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} in #t48 == null ?{core::int} #t48 as{Unchecked} core::int : #t48{core::int} in true) && (!((#1#6#isSet ?{core::int?} #1#6{core::int?} : let final core::bool* #t50 = #1#6#isSet = true in #1#6 = #1#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && #1#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool}) && (let final core::int #t51 = y2 = let core::int? #t52 = #1#6#isSet ?{core::int?} #1#6{core::int?} : let final core::bool* #t53 = #1#6#isSet = true in #1#6 = #1#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} in #t52 == null ?{core::int} #t52 as{Unchecked} core::int : #t52{core::int} in true)))
+    if(!((!((#1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t46 = #1#3#isSet = true in #1#3 = #1#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && #1#0.{self::MyMap::containsKey}(#C5){(core::Object?) → core::bool}) && (let final core::int #t47 = y1 = let core::int? #t48 = #1#3#isSet ?{core::int?} #1#3{core::int?} : let final core::bool #t49 = #1#3#isSet = true in #1#3 = #1#0.{self::MyMap::[]}(#C5){(core::Object?) → core::int?} in #t48 == null ?{core::int} #t48 as{Unchecked} core::int : #t48{core::int} in true) && (!((#1#6#isSet ?{core::int?} #1#6{core::int?} : let final core::bool #t50 = #1#6#isSet = true in #1#6 = #1#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?}) == null) || null is core::int && #1#0.{self::MyMap::containsKey}(#C7){(core::Object?) → core::bool}) && (let final core::int #t51 = y2 = let core::int? #t52 = #1#6#isSet ?{core::int?} #1#6{core::int?} : let final core::bool #t53 = #1#6#isSet = true in #1#6 = #1#0.{self::MyMap::[]}(#C7){(core::Object?) → core::int?} in #t52 == null ?{core::int} #t52 as{Unchecked} core::int : #t52{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   self::expect(self::hasUnsoundNullSafety ?{core::String} self::unsoundResult : self::soundResult, map.{self::MyMap::log}{core::String});
diff --git a/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect
index 15caca9..ce9d4a7 100644
--- a/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_lookup.dart.weak.transformed.expect
@@ -68,14 +68,14 @@
     synthesized core::int? #0#9;
     synthesized core::bool #0#9#isSet = false;
     {
-      if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t3 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
+      if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t3 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
         {
           return "match-2";
         }
       }
     }
     {
-      if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t5 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t7 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t8 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
+      if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t5 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t7 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t8 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
         {
           return "match-3";
         }
@@ -105,13 +105,13 @@
     #L2:
     {
       {
-        if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t10 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t11 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t12 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t13 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
+        if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t10 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t11 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t12 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t13 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
           #t9 = "match-2";
           break #L2;
         }
       }
       {
-        if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool* #t14 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t16 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t17 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
+        if(#0#0 is core::Map<core::String, core::int> && (#0#3#isSet ?{core::bool} #0#3{core::bool} : let final core::bool #t14 = #0#3#isSet = true in #0#3 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && (#0#6#isSet ?{core::bool} #0#6{core::bool} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #C6 =={core::num::==}{(core::Object) → core::bool} #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} as{Unchecked} core::int) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t16 = #0#8#isSet = true in #0#8 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t17 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C7){(core::Object?) → core::int?}) as{Unchecked} core::int) {
           #t9 = "match-3";
           break #L2;
         }
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_case.dart.strong.transformed.expect
index 6c1c4ed..042eacd 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_case.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
     synthesized dynamic #0#9;
     synthesized core::bool #0#9#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t3 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic})) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t3 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic})) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.strong.transformed.expect
index e845441..51253ed 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_case_with_type_arguments.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
     synthesized core::int? #0#9;
     synthesized core::bool #0#9#isSet = false;
     {
-      if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t2 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int}) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t5 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool* #t6 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t5 == null ?{core::int} #t5 as{Unchecked} core::int : #t5{core::int})) {
+      if(#0#0 is core::Map<core::String, core::int> && (!((#0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t2 = #0#4#isSet ?{core::int?} #0#4{core::int?} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C1){(core::Object?) → core::int?} in #t2 == null ?{core::int} #t2 as{Unchecked} core::int : #t2{core::int}) && (!((#0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?}) == null) || null is core::int && #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t5 = #0#9#isSet ?{core::int?} #0#9{core::int?} : let final core::bool #t6 = #0#9#isSet = true in #0#9 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C3){(core::Object?) → core::int?} in #t5 == null ?{core::int} #t5 as{Unchecked} core::int : #t5{core::int})) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.strong.transformed.expect
index 61db558..df0c0cf 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_cast.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#5;
     synthesized core::bool #0#5#isSet = false;
     {
-      if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is core::Map<core::Object?, core::Object?> && (!((#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t4 = #0#5#isSet = true in #0#5 = ((let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} core::Map<core::Object?, core::Object?>).{core::Map::[]}(#C1){(core::Object?) → core::Object?}) == null) || null is core::Object? && ((let dynamic #t6 = #0#0 in #t6 == null ?{core::Object} #t6 as core::Object : #t6{core::Object}) as{Unchecked} core::Map<core::Object?, core::Object?>).{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool* #t7 = #0#5#isSet = true in #0#5 = ((let dynamic #t8 = #0#0 in #t8 == null ?{core::Object} #t8 as core::Object : #t8{core::Object}) as{Unchecked} core::Map<core::Object?, core::Object?>).{core::Map::[]}(#C1){(core::Object?) → core::Object?})) {
+      if(let final core::Object #t1 = let dynamic #t2 = #0#0 in #t2 == null ?{core::Object} #t2 as core::Object : #t2{core::Object} in (let dynamic #t3 = #0#0 in #t3 == null ?{core::Object} #t3 as core::Object : #t3{core::Object}) is core::Map<core::Object?, core::Object?> && (!((#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t4 = #0#5#isSet = true in #0#5 = ((let dynamic #t5 = #0#0 in #t5 == null ?{core::Object} #t5 as core::Object : #t5{core::Object}) as{Unchecked} core::Map<core::Object?, core::Object?>).{core::Map::[]}(#C1){(core::Object?) → core::Object?}) == null) || null is core::Object? && ((let dynamic #t6 = #0#0 in #t6 == null ?{core::Object} #t6 as core::Object : #t6{core::Object}) as{Unchecked} core::Map<core::Object?, core::Object?>).{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::Object?} #0#5{core::Object?} : let final core::bool #t7 = #0#5#isSet = true in #0#5 = ((let dynamic #t8 = #0#0 in #t8 == null ?{core::Object} #t8 as core::Object : #t8{core::Object}) as{Unchecked} core::Map<core::Object?, core::Object?>).{core::Map::[]}(#C1){(core::Object?) → core::Object?})) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.strong.transformed.expect
index 135c084..55a9a6c 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
     synthesized core::bool #0#4#isSet = false;
     synthesized dynamic #0#9;
     synthesized core::bool #0#9#isSet = false;
-    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t3 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic})) {
+    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t3 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C3){(core::Object?) → dynamic})) {
     }
   }
 }
@@ -25,7 +25,7 @@
     synthesized core::bool #0#4#isSet = false;
     synthesized dynamic #0#9;
     synthesized core::bool #0#9#isSet = false;
-    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t7 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t8 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
+    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t7 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C6 =={core::String::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t8 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
       return 0;
     }
     else {
@@ -38,14 +38,14 @@
     final synthesized core::Map<core::bool, core::double> #0#0 = x;
     synthesized core::double? #0#3;
     synthesized core::bool #0#3#isSet = false;
-    if((!((#0#3#isSet ?{core::double?} #0#3{core::double?} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C7){(core::Object?) → core::double?}) == null) || null is core::double && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::double? #t10 = #0#3#isSet ?{core::double?} #0#3{core::double?} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C7){(core::Object?) → core::double?} in #t10 == null ?{core::double} #t10 as{Unchecked} core::double : #t10{core::double})) {
+    if((!((#0#3#isSet ?{core::double?} #0#3{core::double?} : let final core::bool #t9 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C7){(core::Object?) → core::double?}) == null) || null is core::double && #0#0.{core::Map::containsKey}(#C7){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::double? #t10 = #0#3#isSet ?{core::double?} #0#3{core::double?} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C7){(core::Object?) → core::double?} in #t10 == null ?{core::double} #t10 as{Unchecked} core::double : #t10{core::double})) {
     }
   }
   {
     final synthesized core::Map<core::bool, core::double> #1#0 = x;
     synthesized core::double? #1#3;
     synthesized core::bool #1#3#isSet = false;
-    if((!((#1#3#isSet ?{core::double?} #1#3{core::double?} : let final core::bool* #t12 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C9){(core::Object?) → core::double?}) == null) || null is core::double && #1#0.{core::Map::containsKey}(#C9){(core::Object?) → core::bool}) && #C10 =={core::num::==}{(core::Object) → core::bool} (let core::double? #t13 = #1#3#isSet ?{core::double?} #1#3{core::double?} : let final core::bool* #t14 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C9){(core::Object?) → core::double?} in #t13 == null ?{core::double} #t13 as{Unchecked} core::double : #t13{core::double})) {
+    if((!((#1#3#isSet ?{core::double?} #1#3{core::double?} : let final core::bool #t12 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C9){(core::Object?) → core::double?}) == null) || null is core::double && #1#0.{core::Map::containsKey}(#C9){(core::Object?) → core::bool}) && #C10 =={core::num::==}{(core::Object) → core::bool} (let core::double? #t13 = #1#3#isSet ?{core::double?} #1#3{core::double?} : let final core::bool #t14 = #1#3#isSet = true in #1#3 = #1#0.{core::Map::[]}(#C9){(core::Object?) → core::double?} in #t13 == null ?{core::double} #t13 as{Unchecked} core::double : #t13{core::double})) {
     }
   }
 }
@@ -56,7 +56,7 @@
     synthesized core::bool #0#3#isSet = false;
     synthesized core::int? #0#8;
     synthesized core::bool #0#8#isSet = false;
-    if((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t15 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C11){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t16 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t17 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C11){(core::Object?) → core::int?} in #t16 == null ?{core::int} #t16 as{Unchecked} core::int : #t16{core::int}) && (!((#0#8#isSet ?{core::int?} #0#8{core::int?} : let final core::bool* #t18 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::[]}(#C12){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t19 = #0#8#isSet ?{core::int?} #0#8{core::int?} : let final core::bool* #t20 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::[]}(#C12){(core::Object?) → core::int?} in #t19 == null ?{core::int} #t19 as{Unchecked} core::int : #t19{core::int})) {
+    if((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t15 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C11){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C11){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t16 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t17 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C11){(core::Object?) → core::int?} in #t16 == null ?{core::int} #t16 as{Unchecked} core::int : #t16{core::int}) && (!((#0#8#isSet ?{core::int?} #0#8{core::int?} : let final core::bool #t18 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::[]}(#C12){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && #C4 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t19 = #0#8#isSet ?{core::int?} #0#8{core::int?} : let final core::bool #t20 = #0#8#isSet = true in #0#8 = #0#0.{core::Map::[]}(#C12){(core::Object?) → core::int?} in #t19 == null ?{core::int} #t19 as{Unchecked} core::int : #t19{core::int})) {
     }
   }
 }
@@ -70,7 +70,7 @@
     {
       hoisted dynamic y1;
       hoisted core::String y2;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t21 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C11){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C11){(core::Object?) → core::bool}) && (let final dynamic #t22 = y1 = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t23 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C11){(core::Object?) → dynamic} in true) && (!((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t24 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (let final dynamic #t25 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t26 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! in (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t27 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! is core::String && (let final core::String #t28 = y2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t29 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! as{Unchecked} core::String in true))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t21 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C11){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C11){(core::Object?) → core::bool}) && (let final dynamic #t22 = y1 = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t23 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C11){(core::Object?) → dynamic} in true) && (!((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t24 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool}) && (let final dynamic #t25 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t26 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! in (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t27 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! is core::String && (let final core::String #t28 = y2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t29 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! as{Unchecked} core::String in true))) {
         return 0;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect
index 76a5e1d..db8218a 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_if_case.dart.weak.transformed.expect
@@ -52,7 +52,7 @@
     {
       hoisted dynamic y1;
       hoisted core::String y2;
-      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && (let final dynamic #t1 = y1 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C11){(core::Object?) → dynamic} in true) && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && (let final dynamic #t2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t3 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! in (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t4 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! is core::String && (let final core::String #t5 = y2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t6 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! as{Unchecked} core::String in true))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C11){(core::Object?) → core::bool} && (let final dynamic #t1 = y1 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C11){(core::Object?) → dynamic} in true) && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C12){(core::Object?) → core::bool} && (let final dynamic #t2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t3 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! in (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t4 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! is core::String && (let final core::String #t5 = y2 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t6 = #0#7#isSet = true in #0#7 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C12){(core::Object?) → dynamic})! as{Unchecked} core::String in true))) {
         return 0;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_null_assert.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_null_assert.dart.strong.transformed.expect
index 4541784..943bd3f 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_null_assert.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_null_assert.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#5;
     synthesized core::bool #0#5#isSet = false;
     {
-      if(let final dynamic #t1 = #0#0! in #0#0! is core::Map<dynamic, dynamic> && (!((#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool* #t2 = #0#5#isSet = true in #0#5 = (#0#0! as{Unchecked} core::Map<dynamic, dynamic>).{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#0! as{Unchecked} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool* #t3 = #0#5#isSet = true in #0#5 = (#0#0! as{Unchecked} core::Map<dynamic, dynamic>).{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+      if(let final dynamic #t1 = #0#0! in #0#0! is core::Map<dynamic, dynamic> && (!((#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool #t2 = #0#5#isSet = true in #0#5 = (#0#0! as{Unchecked} core::Map<dynamic, dynamic>).{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#0! as{Unchecked} core::Map<dynamic, dynamic>).{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool #t3 = #0#5#isSet = true in #0#5 = (#0#0! as{Unchecked} core::Map<dynamic, dynamic>).{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/map_pattern_inside_null_check.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/map_pattern_inside_null_check.dart.strong.transformed.expect
index 3b67650..c524539 100644
--- a/pkg/front_end/testcases/patterns/map_pattern_inside_null_check.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/map_pattern_inside_null_check.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#5;
     synthesized core::bool #0#5#isSet = false;
     {
-      if(!(#0#0 == null) && (#0#0 is core::Map<dynamic, dynamic> && (!((#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool* #t1 = #0#5#isSet = true in #0#5 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool* #t2 = #0#5#isSet = true in #0#5 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
+      if(!(#0#0 == null) && (#0#0 is core::Map<dynamic, dynamic> && (!((#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool #t1 = #0#5#isSet = true in #0#5 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool #t2 = #0#5#isSet = true in #0#5 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
index 0e2c21c..c1fe7d4 100644
--- a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.strong.transformed.expect
@@ -537,8 +537,8 @@
     {
       hoisted core::int x;
       hoisted core::int y;
-      if(#0#0.{self::A::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t11 = x = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t12 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int} in true)) && (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t13 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}) is core::int) {
-        y = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t14 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int};
+      if(#0#0.{self::A::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t11 = x = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int} in true)) && (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t13 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}) is core::int) {
+        y = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t14 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int};
         {
           self::expectEquals(x, 0);
           self::expectEquals(y, 0);
diff --git a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect
index b9f53c8..764c2d9 100644
--- a/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/matching_and_capturing_accesses_list_element_once.dart.weak.transformed.expect
@@ -537,8 +537,8 @@
     {
       hoisted core::int x;
       hoisted core::int y;
-      if(#0#0.{self::A::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t9 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t10 = x = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int} in true)) && (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t12 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}) is core::int) {
-        y = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool* #t13 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int};
+      if(#0#0.{self::A::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C8 && ((#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t9 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int}) is core::int && (let final core::int #t10 = x = #0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0.{self::A::[]}(0){(core::int) → core::int} in true)) && (#0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t12 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int}) is core::int) {
+        y = #0#5#isSet ?{core::int} #0#5{core::int} : let final core::bool #t13 = #0#5#isSet = true in #0#5 = #0#0.{self::A::[]}(1){(core::int) → core::int};
         {
           self::expectEquals(x, 0);
           self::expectEquals(y, 0);
diff --git a/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.strong.transformed.expect
index e6d8fc6..aa58a59 100644
--- a/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.strong.transformed.expect
@@ -34,7 +34,7 @@
     {
       lowered hoisted core::int y#case#0;
       lowered hoisted dynamic y#case#1;
-      if(#0#0 is core::int && (let final core::int #t3 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t4 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final dynamic #t6 = y#case#1 = #0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && y#case#1 =={core::Object::==}{(core::Object) → core::bool} 0 && (let final dynamic #t8 = #t1 = y#case#1 in true)) {
+      if(#0#0 is core::int && (let final core::int #t3 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t4 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final dynamic #t6 = y#case#1 = #0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && y#case#1 =={core::Object::==}{(core::Object) → core::bool} 0 && (let final dynamic #t8 = #t1 = y#case#1 in true)) {
         core::int y = invalid-expression "pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart:10:14: Error: Variable pattern 'y' doesn't have the same type or finality in all cases.
       return y;
              ^";
@@ -46,7 +46,7 @@
     {
       lowered hoisted core::int y#case#0;
       lowered final hoisted core::int y#case#1;
-      if(#0#0 is core::int && (let final core::int #t9 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t10 = #t2 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t13 = y#case#1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && y#case#1 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t15 = #t2 = y#case#1 in true)) {
+      if(#0#0 is core::int && (let final core::int #t9 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t10 = #t2 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t13 = y#case#1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && y#case#1 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t15 = #t2 = y#case#1 in true)) {
         core::int y = #t2{core::int};
         {
           return y;
@@ -55,7 +55,7 @@
     }
     {
       hoisted invalid-type y;
-      if((#0#0 is core::int && (let final invalid-type #t16 = y = #0#0{invalid-type} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final invalid-type #t18 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) && y =={core::Object::==}{(core::Object) → core::bool} 0) {
+      if((#0#0 is core::int && (let final invalid-type #t16 = y = #0#0{invalid-type} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final invalid-type #t18 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) && y =={core::Object::==}{(core::Object) → core::bool} 0) {
         {
           return y;
         }
@@ -63,7 +63,7 @@
     }
     {
       hoisted core::int y;
-      if((#0#0 is core::int && (let final core::int #t20 = y = #0#0{core::int} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t21 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))) && y =={core::num::==}{(core::Object) → core::bool} 0) {
+      if((#0#0 is core::int && (let final core::int #t20 = y = #0#0{core::int} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t21 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))) && y =={core::num::==}{(core::Object) → core::bool} 0) {
         {
           return y;
         }
diff --git a/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.weak.transformed.expect
index e6d8fc6..aa58a59 100644
--- a/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart.weak.transformed.expect
@@ -34,7 +34,7 @@
     {
       lowered hoisted core::int y#case#0;
       lowered hoisted dynamic y#case#1;
-      if(#0#0 is core::int && (let final core::int #t3 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t4 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final dynamic #t6 = y#case#1 = #0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && y#case#1 =={core::Object::==}{(core::Object) → core::bool} 0 && (let final dynamic #t8 = #t1 = y#case#1 in true)) {
+      if(#0#0 is core::int && (let final core::int #t3 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t4 = #t1 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final dynamic #t6 = y#case#1 = #0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && y#case#1 =={core::Object::==}{(core::Object) → core::bool} 0 && (let final dynamic #t8 = #t1 = y#case#1 in true)) {
         core::int y = invalid-expression "pkg/front_end/testcases/patterns/mismatching_joint_pattern_variables.dart:10:14: Error: Variable pattern 'y' doesn't have the same type or finality in all cases.
       return y;
              ^";
@@ -46,7 +46,7 @@
     {
       lowered hoisted core::int y#case#0;
       lowered final hoisted core::int y#case#1;
-      if(#0#0 is core::int && (let final core::int #t9 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t10 = #t2 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t13 = y#case#1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && y#case#1 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t15 = #t2 = y#case#1 in true)) {
+      if(#0#0 is core::int && (let final core::int #t9 = y#case#0 = #0#0{core::int} in true) && y#case#0 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t10 = #t2 = y#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t13 = y#case#1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && y#case#1 =={core::num::==}{(core::Object) → core::bool} 0 && (let final core::int #t15 = #t2 = y#case#1 in true)) {
         core::int y = #t2{core::int};
         {
           return y;
@@ -55,7 +55,7 @@
     }
     {
       hoisted invalid-type y;
-      if((#0#0 is core::int && (let final invalid-type #t16 = y = #0#0{invalid-type} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final invalid-type #t18 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) && y =={core::Object::==}{(core::Object) → core::bool} 0) {
+      if((#0#0 is core::int && (let final invalid-type #t16 = y = #0#0{invalid-type} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t17 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && (let final invalid-type #t18 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} invalid-type in true)) && y =={core::Object::==}{(core::Object) → core::bool} 0) {
         {
           return y;
         }
@@ -63,7 +63,7 @@
     }
     {
       hoisted core::int y;
-      if((#0#0 is core::int && (let final core::int #t20 = y = #0#0{core::int} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t21 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))) && y =={core::num::==}{(core::Object) → core::bool} 0) {
+      if((#0#0 is core::int && (let final core::int #t20 = y = #0#0{core::int} in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t21 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t23 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t24 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))) && y =={core::num::==}{(core::Object) → core::bool} 0) {
         {
           return y;
         }
diff --git a/pkg/front_end/testcases/patterns/multiple_targets.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/multiple_targets.dart.strong.transformed.expect
index 353aaa7..464f78e 100644
--- a/pkg/front_end/testcases/patterns/multiple_targets.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/multiple_targets.dart.strong.transformed.expect
@@ -37,70 +37,70 @@
     synthesized dynamic #0#31;
     synthesized core::bool #0#31#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t3 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t3 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 0;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t6 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t6 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 1;
         }
       }
     }
     {
-      if(#0#0 is core::List<core::int> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::int>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::int>}.{core::List::[]}(0){(core::int) → core::int}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int} #0#9{core::int} : let final core::bool* #t9 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::int>}.{core::List::[]}(1){(core::int) → core::int})) {
+      if(#0#0 is core::List<core::int> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::int>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::int>}.{core::List::[]}(0){(core::int) → core::int}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int} #0#9{core::int} : let final core::bool #t9 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::int>}.{core::List::[]}(1){(core::int) → core::int})) {
         {
           return 2;
         }
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool* #t10 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool* #t11 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool* #t12 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t10 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t11 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t12 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
         {
           return 3;
         }
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool* #t13 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool* #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool* #t15 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t13 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t15 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
         {
           return 4;
         }
       }
     }
     {
-      if(#0#0 is core::Map<core::String, core::int> && (!((#0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool* #t16 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool* #t17 = #0#21#isSet = true in #0#21 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t18 = #0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool* #t19 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t18 == null ?{core::int} #t18 as{Unchecked} core::int : #t18{core::int})) {
+      if(#0#0 is core::Map<core::String, core::int> && (!((#0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool #t16 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) == null) || null is core::int && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t17 = #0#21#isSet = true in #0#21 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool})) && #C8 =={core::num::==}{(core::Object) → core::bool} (let core::int? #t18 = #0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool #t19 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?} in #t18 == null ?{core::int} #t18 as{Unchecked} core::int : #t18{core::int})) {
         {
           return 5;
         }
       }
     }
     {
-      if(#0#0 is self::A<dynamic> && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool* #t20 = #0#31#isSet = true in #0#31 = #0#0{self::A<dynamic>}.{self::A::foo}{dynamic})) {
+      if(#0#0 is self::A<dynamic> && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool #t20 = #0#31#isSet = true in #0#31 = #0#0{self::A<dynamic>}.{self::A::foo}{dynamic})) {
         {
           return 6;
         }
       }
     }
     {
-      if(#0#0 is self::A<core::int> && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool* #t21 = #0#31#isSet = true in #0#31 = #0#0{self::A<core::int>}.{self::A::foo}{core::int})) {
+      if(#0#0 is self::A<core::int> && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool #t21 = #0#31#isSet = true in #0#31 = #0#0{self::A<core::int>}.{self::A::foo}{core::int})) {
         {
           return 7;
         }
       }
     }
     {
-      if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool* #t22 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) {
+      if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool #t22 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) {
         {
           return 8;
         }
       }
     }
     {
-      if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool* #t23 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) {
+      if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool #t23 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) {
         {
           return 9;
         }
diff --git a/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect
index edd0a1f..5291d14 100644
--- a/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/multiple_targets.dart.weak.transformed.expect
@@ -37,70 +37,70 @@
     synthesized dynamic #0#31;
     synthesized core::bool #0#31#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t3 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t3 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 0;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t6 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t6 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 1;
         }
       }
     }
     {
-      if(#0#0 is core::List<core::int> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::int>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::int>}.{core::List::[]}(0){(core::int) → core::int}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int} #0#9{core::int} : let final core::bool* #t9 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::int>}.{core::List::[]}(1){(core::int) → core::int})) {
+      if(#0#0 is core::List<core::int> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::int>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::int>}.{core::List::[]}(0){(core::int) → core::int}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int} #0#9{core::int} : let final core::bool #t9 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::int>}.{core::List::[]}(1){(core::int) → core::int})) {
         {
           return 2;
         }
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool* #t10 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool* #t11 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t10 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t11 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
         {
           return 3;
         }
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool* #t12 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool* #t13 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t12 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t13 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
         {
           return 4;
         }
       }
     }
     {
-      if(#0#0 is core::Map<core::String, core::int> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool* #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool* #t15 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int) {
+      if(#0#0 is core::Map<core::String, core::int> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool #t15 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int) {
         {
           return 5;
         }
       }
     }
     {
-      if(#0#0 is self::A<dynamic> && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool* #t16 = #0#31#isSet = true in #0#31 = #0#0{self::A<dynamic>}.{self::A::foo}{dynamic})) {
+      if(#0#0 is self::A<dynamic> && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool #t16 = #0#31#isSet = true in #0#31 = #0#0{self::A<dynamic>}.{self::A::foo}{dynamic})) {
         {
           return 6;
         }
       }
     }
     {
-      if(#0#0 is self::A<core::int> && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool* #t17 = #0#31#isSet = true in #0#31 = #0#0{self::A<core::int>}.{self::A::foo}{core::int})) {
+      if(#0#0 is self::A<core::int> && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool #t17 = #0#31#isSet = true in #0#31 = #0#0{self::A<core::int>}.{self::A::foo}{core::int})) {
         {
           return 7;
         }
       }
     }
     {
-      if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool* #t18 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) {
+      if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool #t18 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) {
         {
           return 8;
         }
       }
     }
     {
-      if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool* #t19 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) {
+      if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool #t19 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) {
         {
           return 9;
         }
diff --git a/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
index 75ca19f..48f2253 100644
--- a/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/negative_length.dart.strong.transformed.expect
@@ -537,19 +537,19 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C8){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C8){(core::num) → core::bool}) {
           #t10 = 2;
           break #L1;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t12 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C9) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t12 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C9) {
           #t10 = 1;
           break #L1;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C7){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t13 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C7){(core::num) → core::bool}) {
           #t10 = 0;
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect
index 9592c4f..917f211 100644
--- a/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/negative_length.dart.weak.transformed.expect
@@ -537,19 +537,19 @@
     #L1:
     {
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C8){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t10 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C8){(core::num) → core::bool}) {
           #t9 = 2;
           break #L1;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C9) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C9) {
           #t9 = 1;
           break #L1;
         }
       }
       {
-        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t12 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C7){(core::num) → core::bool}) {
+        if((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t12 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::<=}(#C7){(core::num) → core::bool}) {
           #t9 = 0;
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.strong.transformed.expect
index ffef3b1..469e4c6 100644
--- a/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/non_constant_pattern_in_if.dart.strong.transformed.expect
@@ -54,7 +54,7 @@
     final synthesized dynamic #2#0 = value;
     synthesized dynamic #2#4;
     synthesized core::bool #2#4#isSet = false;
-    if(#2#0 is core::Map<dynamic, dynamic> && (!((#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool* #t1 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C4 =={core::String::==}{(core::Object) → core::bool} (#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool* #t2 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+    if(#2#0 is core::Map<dynamic, dynamic> && (!((#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool #t1 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C4 =={core::String::==}{(core::Object) → core::bool} (#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool #t2 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
       matched = true;
     }
   }
@@ -62,7 +62,7 @@
     final synthesized dynamic #3#0 = value;
     synthesized core::Object? #3#4;
     synthesized core::bool #3#4#isSet = false;
-    if(#3#0 is core::Map<core::num, core::Object> && (!((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t3 = #3#4#isSet = true in #3#4 = #3#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?}) == null) || null is core::Object && #3#0{core::Map<core::num, core::Object>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C4 =={core::String::==}{(core::Object) → core::bool} (let core::Object? #t4 = #3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool* #t5 = #3#4#isSet = true in #3#4 = #3#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} in #t4 == null ?{core::Object} #t4 as{Unchecked} core::Object : #t4{core::Object})) {
+    if(#3#0 is core::Map<core::num, core::Object> && (!((#3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t3 = #3#4#isSet = true in #3#4 = #3#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?}) == null) || null is core::Object && #3#0{core::Map<core::num, core::Object>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C4 =={core::String::==}{(core::Object) → core::bool} (let core::Object? #t4 = #3#4#isSet ?{core::Object?} #3#4{core::Object?} : let final core::bool #t5 = #3#4#isSet = true in #3#4 = #3#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} in #t4 == null ?{core::Object} #t4 as{Unchecked} core::Object : #t4{core::Object})) {
       matched = true;
     }
   }
diff --git a/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.strong.transformed.expect
index a270fe9..116db2b 100644
--- a/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.strong.transformed.expect
@@ -52,7 +52,7 @@
     synthesized core::bool #0#15;
     synthesized core::bool #0#15#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t2 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t2 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})) {
         {
           matched = true;
           break #L1;
@@ -60,7 +60,7 @@
       }
     }
     {
-      if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t4 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num})) {
+      if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t4 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num})) {
         {
           matched = true;
           break #L1;
@@ -68,7 +68,7 @@
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t5 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t6 = #0#12#isSet = true in #0#12 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool* #t7 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t8 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t5 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t6 = #0#12#isSet = true in #0#12 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool #t7 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} (#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t8 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
         {
           matched = true;
           break #L1;
@@ -76,7 +76,7 @@
       }
     }
     {
-      if(#0#0 is core::Map<core::num, core::Object> && (!((#0#13#isSet ?{core::Object?} #0#13{core::Object?} : let final core::bool* #t9 = #0#13#isSet = true in #0#13 = #0#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?}) == null) || null is core::Object && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t10 = #0#12#isSet = true in #0#12 = #0#0{core::Map<core::num, core::Object>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool* #t11 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} (let core::Object? #t12 = #0#13#isSet ?{core::Object?} #0#13{core::Object?} : let final core::bool* #t13 = #0#13#isSet = true in #0#13 = #0#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} in #t12 == null ?{core::Object} #t12 as{Unchecked} core::Object : #t12{core::Object}))) {
+      if(#0#0 is core::Map<core::num, core::Object> && (!((#0#13#isSet ?{core::Object?} #0#13{core::Object?} : let final core::bool #t9 = #0#13#isSet = true in #0#13 = #0#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?}) == null) || null is core::Object && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t10 = #0#12#isSet = true in #0#12 = #0#0{core::Map<core::num, core::Object>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool})) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool #t11 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} (let core::Object? #t12 = #0#13#isSet ?{core::Object?} #0#13{core::Object?} : let final core::bool #t13 = #0#13#isSet = true in #0#13 = #0#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} in #t12 == null ?{core::Object} #t12 as{Unchecked} core::Object : #t12{core::Object}))) {
         {
           matched = true;
           break #L1;
diff --git a/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect
index d39ed31..1e0668b 100644
--- a/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/non_constant_pattern_in_switch.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
     synthesized core::bool #0#15;
     synthesized core::bool #0#15#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t2 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t2 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})) {
         {
           matched = true;
           break #L1;
@@ -58,7 +58,7 @@
       }
     }
     {
-      if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t4 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num})) {
+      if(#0#0 is core::List<core::num> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::num>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C9) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t4 = #0#8#isSet = true in #0#8 = #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<core::num>}.{core::List::[]}(0){(core::int) → core::num})) {
         {
           matched = true;
           break #L1;
@@ -66,7 +66,7 @@
       }
     }
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t5 = #0#12#isSet = true in #0#12 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool* #t6 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t5 = #0#12#isSet = true in #0#12 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool #t6 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
         {
           matched = true;
           break #L1;
@@ -74,7 +74,7 @@
       }
     }
     {
-      if(#0#0 is core::Map<core::num, core::Object> && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool* #t7 = #0#12#isSet = true in #0#12 = #0#0{core::Map<core::num, core::Object>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool* #t8 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} #0#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} as{Unchecked} core::Object)) {
+      if(#0#0 is core::Map<core::num, core::Object> && (#0#12#isSet ?{core::bool} #0#12{core::bool} : let final core::bool #t7 = #0#12#isSet = true in #0#12 = #0#0{core::Map<core::num, core::Object>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#15#isSet ?{core::bool} #0#15{core::bool} : let final core::bool #t8 = #0#15#isSet = true in #0#15 = #C4 =={core::String::==}{(core::Object) → core::bool} #0#0{core::Map<core::num, core::Object>}.{core::Map::[]}(#C1){(core::Object?) → core::Object?} as{Unchecked} core::Object)) {
         {
           matched = true;
           break #L1;
diff --git a/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.strong.transformed.expect
index 01addca..6aaa7ee 100644
--- a/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.strong.transformed.expect
@@ -288,7 +288,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t2 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t2 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -347,7 +347,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t8 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t8 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -406,7 +406,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t14 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t15 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t14 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t15 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -465,7 +465,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t20 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t21 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t20 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t21 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -524,7 +524,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t26 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t27 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t26 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t27 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -583,7 +583,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t32 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t33 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t32 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t33 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -642,7 +642,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t37 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t38 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t39 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t37 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t38 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t39 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -701,7 +701,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t43 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t44 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t45 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t43 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t44 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t45 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
diff --git a/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.weak.transformed.expect
index 356e0a1..575c6cb 100644
--- a/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/non_type_object_pattern.dart.weak.transformed.expect
@@ -289,7 +289,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t2 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t2 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -349,7 +349,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t8 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t8 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -409,7 +409,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t14 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t15 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t14 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t15 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -469,7 +469,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t20 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t21 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t20 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t21 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -529,7 +529,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t25 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t26 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t27 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t25 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t26 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t27 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -589,7 +589,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t32 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t33 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t32 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t33 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -649,7 +649,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t37 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t38 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t39 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t37 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t38 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t39 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
@@ -709,7 +709,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized invalid-type #0#2;
     synthesized core::bool #0#2#isSet = false;
-    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t43 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t44 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool* #t45 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
+    if(!(#0#0 is invalid-type && ((#0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t43 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field) is core::int && (let final invalid-type #t44 = field = #0#2#isSet ?{invalid-type} #0#2{invalid-type} : let final core::bool #t45 = #0#2#isSet = true in #0#2 = #0#0{invalid-type}{<invalid>}.field in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   final hoisted has-declared-initializer invalid-type o;
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect
index a1e50fa0..e58246f 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     synthesized core::int? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})!)) {
+      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})!)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect
index a1e50fa0..e58246f 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
     synthesized core::int? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})!)) {
+      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})!)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index a73fb01..a486e13 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int f;
-      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in let final core::int? #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in true)) {
+      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in let final core::int? #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in true)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index a73fb01..a486e13 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int f;
-      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in let final core::int? #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in true)) {
+      if(#0#0 is self::C && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in let final core::int? #t3 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?})! in true)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.strong.transformed.expect
index d6419e9..aadd77e 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})!)) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})!)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.weak.transformed.expect
index d6419e9..aadd77e 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_list_pattern.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})!)) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic})!)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.strong.transformed.expect
index 3c2ef80e..5f41083 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t2 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})! in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})!)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t2 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})! in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})!)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.weak.transformed.expect
index 1c8d58a..55125cb 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_map_pattern.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final dynamic #t1 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})! in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})!)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (let final dynamic #t1 = (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})! in #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})!)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
index f2ed42c..5081ec5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted dynamic n;
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in let final core::Object? #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in let final core::Object? #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
index f2ed42c..5081ec5 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted dynamic n;
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in let final core::Object? #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in let final core::Object? #t3 = n = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.strong.transformed.expect
index 1ccca16..c636f43 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.weak.transformed.expect
index 1ccca16..c636f43 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_named.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.strong.transformed.expect
index 2e8ca8c..1901140 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, core::Object?) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
+      if(#0#0 is (core::Object?, core::Object?) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.weak.transformed.expect
index 2e8ca8c..1901140 100644
--- a/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_assert_inside_record_pattern_unnamed.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, core::Object?) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
+      if(#0#0 is (core::Object?, core::Object?) && (let final core::Object? #t1 = (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})! in #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})!) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect
index b61a061..883a1d2 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     synthesized core::int? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}))) {
+      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect
index b61a061..883a1d2 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern.dart.weak.transformed.expect
@@ -15,7 +15,7 @@
     synthesized core::int? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}))) {
+      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
index d72b2d6..df30b1e 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int f;
-      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && (let final core::int #t2 = f = let core::int? #t3 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true))) {
+      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && (let final core::int #t2 = f = let core::int? #t3 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
index 5ce832a..5832399 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_extractor_pattern_implicitly_named.dart.weak.transformed.expect
@@ -16,7 +16,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted core::int f;
-      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && (let final core::int #t2 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in true))) {
+      if(#0#0 is self::C && (!((#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) == null) && (let final core::int #t2 = f = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{self::C}.{self::C::f}{core::int?}) as{Unchecked} core::int in true))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.strong.transformed.expect
index 2a5105f..f1d4436 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (!((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}))) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (!((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.weak.transformed.expect
index 2a5105f..f1d4436 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_list_pattern.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (!((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}))) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (!((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.strong.transformed.expect
index f63b53d..8f2677e 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.weak.transformed.expect
index 89f225e..7ceff33 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_map_pattern.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
+      if(#0#0 is core::Map<dynamic, dynamic> && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool} && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}))) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
index 7bcf515..99429a5 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted dynamic n;
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && (let final core::Object? #t2 = n = #0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?} in true)) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && (let final core::Object? #t2 = n = #0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?} in true)) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
index 7bcf515..99429a5 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_implicitly_named.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#2#isSet = false;
     {
       hoisted dynamic n;
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && (let final core::Object? #t2 = n = #0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?} in true)) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && (let final core::Object? #t2 = n = #0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t3 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?} in true)) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.strong.transformed.expect
index 7ed2bf3..222bc95 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.weak.transformed.expect
index 7ed2bf3..222bc95 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_named.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
+      if(#0#0 is (core::Object?, {n: core::Object?}) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, {n: core::Object?})}.n{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {n: core::Object?})}.$1{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.strong.transformed.expect
index 8a4adeb..ba42611 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, core::Object?) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
+      if(#0#0 is (core::Object?, core::Object?) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.weak.transformed.expect
index 8a4adeb..ba42611 100644
--- a/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/null_check_inside_record_pattern_unnamed.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::Object? #0#2;
     synthesized core::bool #0#2#isSet = false;
     {
-      if(#0#0 is (core::Object?, core::Object?) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
+      if(#0#0 is (core::Object?, core::Object?) && (!((#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t1 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?}) == null) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::Object?} #0#2{core::Object?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{(core::Object?, core::Object?)}.$1{core::Object?})) && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/or_pattern_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/or_pattern_errors.dart.strong.transformed.expect
index 3ec8732..99766a9 100644
--- a/pkg/front_end/testcases/patterns/or_pattern_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/or_pattern_errors.dart.strong.transformed.expect
@@ -50,7 +50,7 @@
     synthesized core::bool #0#3#isSet = false;
     {
       hoisted core::int? s1;
-      if(#0#0 is self::Class && (let final core::int? #t1 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t3 = s2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
+      if(#0#0 is self::Class && (let final core::int? #t1 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t3 = s2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
         {
           break #L1;
         }
@@ -58,7 +58,7 @@
     }
     {
       hoisted core::int? s1;
-      if(#0#0 is self::Class && (let final core::int? #t5 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t7 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
+      if(#0#0 is self::Class && (let final core::int? #t5 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t7 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
         {
           break #L1;
         }
@@ -67,7 +67,7 @@
     {
       hoisted core::int? field1;
       hoisted core::int? f;
-      if(#0#0 is self::Class && (let final core::int? #t9 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t11 = f = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t12 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t13 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t14 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t15 = field2 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t16 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true)) {
+      if(#0#0 is self::Class && (let final core::int? #t9 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t11 = f = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t12 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t13 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t14 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t15 = field2 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t16 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/or_pattern_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/or_pattern_errors.dart.weak.transformed.expect
index 3ec8732..99766a9 100644
--- a/pkg/front_end/testcases/patterns/or_pattern_errors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/or_pattern_errors.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
     synthesized core::bool #0#3#isSet = false;
     {
       hoisted core::int? s1;
-      if(#0#0 is self::Class && (let final core::int? #t1 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t3 = s2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
+      if(#0#0 is self::Class && (let final core::int? #t1 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t3 = s2 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
         {
           break #L1;
         }
@@ -58,7 +58,7 @@
     }
     {
       hoisted core::int? s1;
-      if(#0#0 is self::Class && (let final core::int? #t5 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t7 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t8 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
+      if(#0#0 is self::Class && (let final core::int? #t5 = s1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t7 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t8 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true)) {
         {
           break #L1;
         }
@@ -67,7 +67,7 @@
     {
       hoisted core::int? field1;
       hoisted core::int? f;
-      if(#0#0 is self::Class && (let final core::int? #t9 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t11 = f = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t12 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t13 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t14 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t15 = field2 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t16 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true)) {
+      if(#0#0 is self::Class && (let final core::int? #t9 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t11 = f = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t12 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true) || #0#0 is self::Class && (let final core::int? #t13 = field1 = #0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t14 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field1}{core::int?} in true) && (let final core::int? #t15 = field2 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t16 = #0#3#isSet = true in #0#3 = #0#0{self::Class}.{self::Class::field2}{core::int?} in true)) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.strong.transformed.expect
index 18b9087..638e8f6 100644
--- a/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart.strong.transformed.expect
@@ -36,11 +36,11 @@
     final const synthesized invalid-type #0#1 = invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
   var {const C(:var t): a1} = foo();
              ^";
-    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
+    if(!((!((#0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
   var {const C(:var t): a1} = foo();
              ^"){(core::Object?) → core::int?}) == null) || null is core::int && #0#0.{core::Map::containsKey}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
   var {const C(:var t): a1} = foo();
-             ^"){(core::Object?) → core::bool}) && (let final core::int #t2 = a1 = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
+             ^"){(core::Object?) → core::bool}) && (let final core::int #t2 = a1 = let core::int? #t3 = #0#3#isSet ?{core::int?} #0#3{core::int?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(invalid-expression "pkg/front_end/testcases/patterns/parser_recovery_in_pattern_arguments.dart:13:14: Error: This couldn't be parsed.
   var {const C(:var t): a1} = foo();
              ^"){(core::Object?) → core::int?} in #t3 == null ?{core::int} #t3 as{Unchecked} core::int : #t3{core::int} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
diff --git a/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.strong.transformed.expect
index 80e53e6..2014d37 100644
--- a/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_noMetadata_var_map.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
     final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::Map<dynamic, dynamic>;
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(!(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t2 = a = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true)))
+    if(!(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (let final dynamic #t2 = a = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.strong.transformed.expect
index c966121..ec3b4b1 100644
--- a/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_final_map.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::Map<dynamic, dynamic>;
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(!(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final dynamic #t2 = a = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic} in true)))
+    if(!(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final dynamic #t2 = a = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.strong.transformed.expect
index 65e71c9..d0dd834 100644
--- a/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/patternVariableDeclarationStatement_withMetadata_var_map.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::Map<dynamic, dynamic>;
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(!(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final dynamic #t2 = a = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic} in true)))
+    if(!(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final dynamic #t2 = a = #0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t3 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic} in true)))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.strong.transformed.expect
index a21997e..03d3db5 100644
--- a/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.strong.transformed.expect
@@ -62,7 +62,7 @@
     synthesized core::bool #2#9#isSet = false;
     synthesized dynamic #2#16;
     synthesized core::bool #2#16#isSet = false;
-    if(!(#2#0 is self::Class && (let final dynamic #t3 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "declared variable pattern in assignment") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
+    if(!(#2#0 is self::Class && (let final dynamic #t3 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "declared variable pattern in assignment") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
 Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
   Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
                                          ^" && invalid-expression "declared variable pattern in assignment"))))
diff --git a/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.weak.transformed.expect
index a21997e..03d3db5 100644
--- a/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/pattern_assignment_declares.dart.weak.transformed.expect
@@ -62,7 +62,7 @@
     synthesized core::bool #2#9#isSet = false;
     synthesized dynamic #2#16;
     synthesized core::bool #2#16#isSet = false;
-    if(!(#2#0 is self::Class && (let final dynamic #t3 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "declared variable pattern in assignment") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
+    if(!(#2#0 is self::Class && (let final dynamic #t3 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "declared variable pattern in assignment") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:42: Error: Refutable patterns can't be used in an irrefutable context.
 Try using an if-case, a 'switch' statement, or a 'switch' expression instead.
   Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
                                          ^" && invalid-expression "declared variable pattern in assignment"))))
diff --git a/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.strong.transformed.expect
index 3485e85..9a2736e 100644
--- a/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.strong.transformed.expect
@@ -73,9 +73,9 @@
     synthesized core::bool #2#16#isSet = false;
     if(!(#2#0 is self::Class && (let final dynamic #t3 = #2#0{self::Class}.{self::Class::field1}{dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:36:17: Error: Late final variable 'definitelyAssignedLateFinal' definitely assigned.
   Class(field1: definitelyAssignedLateFinal, // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
       field2: [[notDefinitelyAssignedFinal, _], // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t14 = notDefinitelyAssignedLateFinal = ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t15 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t16 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int in true)))))
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t14 = notDefinitelyAssignedLateFinal = ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t15 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t16 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int in true)))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.weak.transformed.expect
index 3485e85..9a2736e 100644
--- a/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/pattern_assignment_final.dart.weak.transformed.expect
@@ -73,9 +73,9 @@
     synthesized core::bool #2#16#isSet = false;
     if(!(#2#0 is self::Class && (let final dynamic #t3 = #2#0{self::Class}.{self::Class::field1}{dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:36:17: Error: Late final variable 'definitelyAssignedLateFinal' definitely assigned.
   Class(field1: definitelyAssignedLateFinal, // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t4 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) is core::List<dynamic> && ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t5 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t6 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t7 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) is core::List<dynamic> && ((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t8 = #2#9#isSet = true in #2#9 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t9 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_final.dart:37:17: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
       field2: [[notDefinitelyAssignedFinal, _], // Error
-                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t14 = notDefinitelyAssignedLateFinal = ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool* #t15 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool* #t16 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int in true)))))
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^") && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t10 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t11 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) is core::List<dynamic> && ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t12 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t13 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t14 = notDefinitelyAssignedLateFinal = ((#2#16#isSet ?{dynamic} #2#16{dynamic} : let final core::bool #t15 = #2#16#isSet = true in #2#16 = ((#2#3#isSet ?{dynamic} #2#3{dynamic} : let final core::bool #t16 = #2#3#isSet = true in #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::List<dynamic>).{core::List::[]}(1){(core::int) → dynamic} as core::int in true)))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
 }
diff --git a/pkg/front_end/testcases/patterns/pattern_types.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/pattern_types.dart.strong.transformed.expect
index 1770995..9ffebaf 100644
--- a/pkg/front_end/testcases/patterns/pattern_types.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/pattern_types.dart.strong.transformed.expect
@@ -227,7 +227,7 @@
       lowered core::int $1#case#1;
       lowered core::String named#case#1;
       invalid-type ambiguousField;
-      if(#0#0 is Null && (let final core::int #t1 = hashCode = #0#0{Null}.{core::Object::hashCode}{<object>}.{core::int} in true) || #0#0 is Null && (let final () → core::String #t2 = toString = #0#0{Null}.{core::Object::toString}{<object>}.{() → core::String} in true) || #0#0 is self::Class && (let final dynamic #t3 = field#case#0 = #0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool* #t4 = #0#5#isSet = true in #0#5 = #0#0{self::Class}.{self::Class::field}{dynamic} in true) || #0#0 is self::Class && (let final () → void #t5 = method#case#0 = #0#6#isSet ?{() → void} #0#6{() → void} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{self::Class}.{self::Class::method}{() → void} in true) || #0#0 is self::Class && (let final core::int #t7 = extensionGetter#case#0 = self::_extension#0|get#extensionGetter(#0#0{self::Class}) in true) || #0#0 is self::Class && (let final () → void #t8 = extensionMethod#case#0 = self::_extension#0|get#extensionMethod(#0#0{self::Class}) in true) || #0#0 is dynamic && (let final dynamic #t9 = dynamicAccess = #0#0{dynamic}.dynamicAccess in true) || #0#0 is () → void && (let final () → void #t10 = call#case#0 = #0#12#isSet ?{() → void} #0#12{() → void} : let final core::bool* #t11 = #0#12#isSet = true in #0#12 = #0#0{() → void} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::int #t12 = $1#case#0 = #0#14#isSet ?{core::int} #0#14{core::int} : let final core::bool* #t13 = #0#14#isSet = true in #0#14 = #0#0{(core::int, {required named: core::String})}.$1{core::int} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::String #t14 = named#case#0 = #0#15#isSet ?{core::String} #0#15{core::String} : let final core::bool* #t15 = #0#15#isSet = true in #0#15 = #0#0{(core::int, {required named: core::String})}.named{core::String} in true) || #0#0 is self::Class && (let final invalid-type #t16 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:73:16: Error: The getter 'missing' isn't defined for the class 'Class'.
+      if(#0#0 is Null && (let final core::int #t1 = hashCode = #0#0{Null}.{core::Object::hashCode}{<object>}.{core::int} in true) || #0#0 is Null && (let final () → core::String #t2 = toString = #0#0{Null}.{core::Object::toString}{<object>}.{() → core::String} in true) || #0#0 is self::Class && (let final dynamic #t3 = field#case#0 = #0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool #t4 = #0#5#isSet = true in #0#5 = #0#0{self::Class}.{self::Class::field}{dynamic} in true) || #0#0 is self::Class && (let final () → void #t5 = method#case#0 = #0#6#isSet ?{() → void} #0#6{() → void} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{self::Class}.{self::Class::method}{() → void} in true) || #0#0 is self::Class && (let final core::int #t7 = extensionGetter#case#0 = self::_extension#0|get#extensionGetter(#0#0{self::Class}) in true) || #0#0 is self::Class && (let final () → void #t8 = extensionMethod#case#0 = self::_extension#0|get#extensionMethod(#0#0{self::Class}) in true) || #0#0 is dynamic && (let final dynamic #t9 = dynamicAccess = #0#0{dynamic}.dynamicAccess in true) || #0#0 is () → void && (let final () → void #t10 = call#case#0 = #0#12#isSet ?{() → void} #0#12{() → void} : let final core::bool #t11 = #0#12#isSet = true in #0#12 = #0#0{() → void} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::int #t12 = $1#case#0 = #0#14#isSet ?{core::int} #0#14{core::int} : let final core::bool #t13 = #0#14#isSet = true in #0#14 = #0#0{(core::int, {required named: core::String})}.$1{core::int} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::String #t14 = named#case#0 = #0#15#isSet ?{core::String} #0#15{core::String} : let final core::bool #t15 = #0#15#isSet = true in #0#15 = #0#0{(core::int, {required named: core::String})}.named{core::String} in true) || #0#0 is self::Class && (let final invalid-type #t16 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:73:16: Error: The getter 'missing' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'missing'.
     case Class(: var missing): // Error: missing getter
@@ -235,7 +235,7 @@
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'missing'.
     case Class(: var missing): // Error: missing getter
-               ^^^^^^^") || #0#0 is self::Class? && (let final invalid-type #t17 = #0#5#isSet ?{invalid-type} #0#5{invalid-type} : let final core::bool* #t18 = #0#5#isSet = true in #0#5 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:74:17: Error: The getter 'field' isn't defined for the class 'Class?'.
+               ^^^^^^^") || #0#0 is self::Class? && (let final invalid-type #t17 = #0#5#isSet ?{invalid-type} #0#5{invalid-type} : let final core::bool #t18 = #0#5#isSet = true in #0#5 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:74:17: Error: The getter 'field' isn't defined for the class 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
     case Class_(: var field): // Error: nullable member get
@@ -243,7 +243,7 @@
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
     case Class_(: var field): // Error: nullable member get
-                ^^^^^") || #0#0 is self::Class? && (let final invalid-type #t19 = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool* #t20 = #0#6#isSet = true in #0#6 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:75:17: Error: The getter 'method' isn't defined for the class 'Class?'.
+                ^^^^^") || #0#0 is self::Class? && (let final invalid-type #t19 = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool #t20 = #0#6#isSet = true in #0#6 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:75:17: Error: The getter 'method' isn't defined for the class 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'method'.
     case Class_(: var method): // Error: nullable member tear-off
@@ -267,19 +267,19 @@
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionMethod'.
     case Class_(: var extensionMethod): // Error: nullable extension tear-off
-                ^^^^^^^^^^^^^^^") || #0#0 is () →? void && (let final invalid-type #t23 = #0#12#isSet ?{invalid-type} #0#12{invalid-type} : let final core::bool* #t24 = #0#12#isSet = true in #0#12 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:78:21: Error: The getter 'call' isn't defined for the class 'void Function()?'.
+                ^^^^^^^^^^^^^^^") || #0#0 is () →? void && (let final invalid-type #t23 = #0#12#isSet ?{invalid-type} #0#12{invalid-type} : let final core::bool #t24 = #0#12#isSet = true in #0#12 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:78:21: Error: The getter 'call' isn't defined for the class 'void Function()?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'call'.
     case Function1_(: var call): // Error: nullable function tear-off
                     ^^^^" in invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:78:21: Error: The getter 'call' isn't defined for the class 'void Function()?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'call'.
     case Function1_(: var call): // Error: nullable function tear-off
-                    ^^^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t25 = #0#14#isSet ?{invalid-type} #0#14{invalid-type} : let final core::bool* #t26 = #0#14#isSet = true in #0#14 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:79:19: Error: The getter '\$1' isn't defined for the class '(int, {String named})?'.
+                    ^^^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t25 = #0#14#isSet ?{invalid-type} #0#14{invalid-type} : let final core::bool #t26 = #0#14#isSet = true in #0#14 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:79:19: Error: The getter '\$1' isn't defined for the class '(int, {String named})?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '\$1'.
     case Record1_(: var \$1): // Error: nullable record index get
                   ^^" in invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:79:19: Error: The getter '\$1' isn't defined for the class '(int, {String named})?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '\$1'.
     case Record1_(: var \$1): // Error: nullable record index get
-                  ^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t27 = #0#15#isSet ?{invalid-type} #0#15{invalid-type} : let final core::bool* #t28 = #0#15#isSet = true in #0#15 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:80:19: Error: The getter 'named' isn't defined for the class '(int, {String named})?'.
+                  ^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t27 = #0#15#isSet ?{invalid-type} #0#15{invalid-type} : let final core::bool #t28 = #0#15#isSet = true in #0#15 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:80:19: Error: The getter 'named' isn't defined for the class '(int, {String named})?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
     case Record1_(: var named): // Error: nullable record named get
                   ^^^^^" in invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:80:19: Error: The getter 'named' isn't defined for the class '(int, {String named})?'.
diff --git a/pkg/front_end/testcases/patterns/pattern_types.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/pattern_types.dart.weak.transformed.expect
index c4f129c..58f4503 100644
--- a/pkg/front_end/testcases/patterns/pattern_types.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/pattern_types.dart.weak.transformed.expect
@@ -228,7 +228,7 @@
       lowered core::int $1#case#1;
       lowered core::String named#case#1;
       invalid-type ambiguousField;
-      if(#0#0 is Null && (let final core::int #t1 = hashCode = #0#0{Null}.{core::Object::hashCode}{<object>}.{core::int} in true) || #0#0 is Null && (let final () → core::String #t2 = toString = #0#0{Null}.{core::Object::toString}{<object>}.{() → core::String} in true) || #0#0 is self::Class && (let final dynamic #t3 = field#case#0 = #0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool* #t4 = #0#5#isSet = true in #0#5 = #0#0{self::Class}.{self::Class::field}{dynamic} in true) || #0#0 is self::Class && (let final () → void #t5 = method#case#0 = #0#6#isSet ?{() → void} #0#6{() → void} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{self::Class}.{self::Class::method}{() → void} in true) || #0#0 is self::Class && (let final core::int #t7 = extensionGetter#case#0 = self::_extension#0|get#extensionGetter(#0#0{self::Class}) in true) || #0#0 is self::Class && (let final () → void #t8 = extensionMethod#case#0 = self::_extension#0|get#extensionMethod(#0#0{self::Class}) in true) || #0#0 is dynamic && (let final dynamic #t9 = dynamicAccess = #0#0{dynamic}.dynamicAccess in true) || #0#0 is () → void && (let final () → void #t10 = call#case#0 = #0#12#isSet ?{() → void} #0#12{() → void} : let final core::bool* #t11 = #0#12#isSet = true in #0#12 = #0#0{() → void} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::int #t12 = $1#case#0 = #0#14#isSet ?{core::int} #0#14{core::int} : let final core::bool* #t13 = #0#14#isSet = true in #0#14 = #0#0{(core::int, {required named: core::String})}.$1{core::int} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::String #t14 = named#case#0 = #0#15#isSet ?{core::String} #0#15{core::String} : let final core::bool* #t15 = #0#15#isSet = true in #0#15 = #0#0{(core::int, {required named: core::String})}.named{core::String} in true) || #0#0 is self::Class && (let final invalid-type #t16 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:73:16: Error: The getter 'missing' isn't defined for the class 'Class'.
+      if(#0#0 is Null && (let final core::int #t1 = hashCode = #0#0{Null}.{core::Object::hashCode}{<object>}.{core::int} in true) || #0#0 is Null && (let final () → core::String #t2 = toString = #0#0{Null}.{core::Object::toString}{<object>}.{() → core::String} in true) || #0#0 is self::Class && (let final dynamic #t3 = field#case#0 = #0#5#isSet ?{dynamic} #0#5{dynamic} : let final core::bool #t4 = #0#5#isSet = true in #0#5 = #0#0{self::Class}.{self::Class::field}{dynamic} in true) || #0#0 is self::Class && (let final () → void #t5 = method#case#0 = #0#6#isSet ?{() → void} #0#6{() → void} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{self::Class}.{self::Class::method}{() → void} in true) || #0#0 is self::Class && (let final core::int #t7 = extensionGetter#case#0 = self::_extension#0|get#extensionGetter(#0#0{self::Class}) in true) || #0#0 is self::Class && (let final () → void #t8 = extensionMethod#case#0 = self::_extension#0|get#extensionMethod(#0#0{self::Class}) in true) || #0#0 is dynamic && (let final dynamic #t9 = dynamicAccess = #0#0{dynamic}.dynamicAccess in true) || #0#0 is () → void && (let final () → void #t10 = call#case#0 = #0#12#isSet ?{() → void} #0#12{() → void} : let final core::bool #t11 = #0#12#isSet = true in #0#12 = #0#0{() → void} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::int #t12 = $1#case#0 = #0#14#isSet ?{core::int} #0#14{core::int} : let final core::bool #t13 = #0#14#isSet = true in #0#14 = #0#0{(core::int, {required named: core::String})}.$1{core::int} in true) || #0#0 is (core::int, {required named: core::String}) && (let final core::String #t14 = named#case#0 = #0#15#isSet ?{core::String} #0#15{core::String} : let final core::bool #t15 = #0#15#isSet = true in #0#15 = #0#0{(core::int, {required named: core::String})}.named{core::String} in true) || #0#0 is self::Class && (let final invalid-type #t16 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:73:16: Error: The getter 'missing' isn't defined for the class 'Class'.
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'missing'.
     case Class(: var missing): // Error: missing getter
@@ -236,7 +236,7 @@
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'missing'.
     case Class(: var missing): // Error: missing getter
-               ^^^^^^^") || #0#0 is self::Class? && (let final invalid-type #t17 = #0#5#isSet ?{invalid-type} #0#5{invalid-type} : let final core::bool* #t18 = #0#5#isSet = true in #0#5 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:74:17: Error: The getter 'field' isn't defined for the class 'Class?'.
+               ^^^^^^^") || #0#0 is self::Class? && (let final invalid-type #t17 = #0#5#isSet ?{invalid-type} #0#5{invalid-type} : let final core::bool #t18 = #0#5#isSet = true in #0#5 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:74:17: Error: The getter 'field' isn't defined for the class 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
     case Class_(: var field): // Error: nullable member get
@@ -244,7 +244,7 @@
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'field'.
     case Class_(: var field): // Error: nullable member get
-                ^^^^^") || #0#0 is self::Class? && (let final invalid-type #t19 = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool* #t20 = #0#6#isSet = true in #0#6 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:75:17: Error: The getter 'method' isn't defined for the class 'Class?'.
+                ^^^^^") || #0#0 is self::Class? && (let final invalid-type #t19 = #0#6#isSet ?{invalid-type} #0#6{invalid-type} : let final core::bool #t20 = #0#6#isSet = true in #0#6 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:75:17: Error: The getter 'method' isn't defined for the class 'Class?'.
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'method'.
     case Class_(: var method): // Error: nullable member tear-off
@@ -268,19 +268,19 @@
  - 'Class' is from 'pkg/front_end/testcases/patterns/pattern_types.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionMethod'.
     case Class_(: var extensionMethod): // Error: nullable extension tear-off
-                ^^^^^^^^^^^^^^^") || #0#0 is () →? void && (let final invalid-type #t23 = #0#12#isSet ?{invalid-type} #0#12{invalid-type} : let final core::bool* #t24 = #0#12#isSet = true in #0#12 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:78:21: Error: The getter 'call' isn't defined for the class 'void Function()?'.
+                ^^^^^^^^^^^^^^^") || #0#0 is () →? void && (let final invalid-type #t23 = #0#12#isSet ?{invalid-type} #0#12{invalid-type} : let final core::bool #t24 = #0#12#isSet = true in #0#12 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:78:21: Error: The getter 'call' isn't defined for the class 'void Function()?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'call'.
     case Function1_(: var call): // Error: nullable function tear-off
                     ^^^^" in invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:78:21: Error: The getter 'call' isn't defined for the class 'void Function()?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'call'.
     case Function1_(: var call): // Error: nullable function tear-off
-                    ^^^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t25 = #0#14#isSet ?{invalid-type} #0#14{invalid-type} : let final core::bool* #t26 = #0#14#isSet = true in #0#14 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:79:19: Error: The getter '\$1' isn't defined for the class '(int, {String named})?'.
+                    ^^^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t25 = #0#14#isSet ?{invalid-type} #0#14{invalid-type} : let final core::bool #t26 = #0#14#isSet = true in #0#14 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:79:19: Error: The getter '\$1' isn't defined for the class '(int, {String named})?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '\$1'.
     case Record1_(: var \$1): // Error: nullable record index get
                   ^^" in invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:79:19: Error: The getter '\$1' isn't defined for the class '(int, {String named})?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named '\$1'.
     case Record1_(: var \$1): // Error: nullable record index get
-                  ^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t27 = #0#15#isSet ?{invalid-type} #0#15{invalid-type} : let final core::bool* #t28 = #0#15#isSet = true in #0#15 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:80:19: Error: The getter 'named' isn't defined for the class '(int, {String named})?'.
+                  ^^") || #0#0 is (core::int, {required named: core::String})? && (let final invalid-type #t27 = #0#15#isSet ?{invalid-type} #0#15{invalid-type} : let final core::bool #t28 = #0#15#isSet = true in #0#15 = invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:80:19: Error: The getter 'named' isn't defined for the class '(int, {String named})?'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
     case Record1_(: var named): // Error: nullable record named get
                   ^^^^^" in invalid-expression "pkg/front_end/testcases/patterns/pattern_types.dart:80:19: Error: The getter 'named' isn't defined for the class '(int, {String named})?'.
diff --git a/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.strong.transformed.expect
index 90be77b..e17469e 100644
--- a/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.strong.transformed.expect
@@ -31,7 +31,7 @@
     synthesized core::bool #4#4#isSet = false;
     {
       hoisted core::double y;
-      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
+      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
         return 0;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.weak.transformed.expect
index 90be77b..e17469e 100644
--- a/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/record_pattern_inside_if_case.dart.weak.transformed.expect
@@ -31,7 +31,7 @@
     synthesized core::bool #4#4#isSet = false;
     {
       hoisted core::double y;
-      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
+      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
         return 0;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.strong.transformed.expect
index 913248e..13ea63a 100644
--- a/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.strong.transformed.expect
@@ -31,7 +31,7 @@
     synthesized core::bool #4#4#isSet = false;
     {
       hoisted core::double y;
-      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
+      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
         return 0;
       }
       else {
@@ -75,7 +75,7 @@
     synthesized core::bool #0#3#isSet = false;
     {
       hoisted core::double y;
-      if(#0#0.$1{core::int} is core::int && ((#0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double}) is core::double && (let final core::double #t8 = y = #0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double} in true)) && (let final core::String #t10 = (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! in (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool* #t12 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! is core::String)) {
+      if(#0#0.$1{core::int} is core::int && ((#0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double}) is core::double && (let final core::double #t8 = y = #0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double} in true)) && (let final core::String #t10 = (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! in (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool #t12 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! is core::String)) {
         return 0;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.weak.transformed.expect
index 913248e..13ea63a 100644
--- a/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.weak.transformed.expect
@@ -31,7 +31,7 @@
     synthesized core::bool #4#4#isSet = false;
     {
       hoisted core::double y;
-      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool* #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool* #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
+      if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && ((#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t1 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) is core::double && (let final core::double #t2 = y = (#4#3#isSet ?{core::Object?} #4#3{core::Object?} : let final core::bool #t3 = #4#3#isSet = true in #4#3 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$2{core::Object?}) as{Unchecked} core::double in true)) && (let final core::Object? #t4 = (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t5 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! in (#4#4#isSet ?{core::Object?} #4#4{core::Object?} : let final core::bool #t6 = #4#4#isSet = true in #4#4 = #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.foo{core::Object?})! is core::String)) {
         return 0;
       }
       else {
@@ -75,7 +75,7 @@
     synthesized core::bool #0#3#isSet = false;
     {
       hoisted core::double y;
-      if(#0#0.$1{core::int} is core::int && ((#0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double}) is core::double && (let final core::double #t8 = y = #0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double} in true)) && (let final core::String #t10 = (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! in (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool* #t12 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! is core::String)) {
+      if(#0#0.$1{core::int} is core::int && ((#0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double}) is core::double && (let final core::double #t8 = y = #0#2#isSet ?{core::double} #0#2{core::double} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0.$2{core::double} in true)) && (let final core::String #t10 = (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool #t11 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! in (#0#3#isSet ?{core::String} #0#3{core::String} : let final core::bool #t12 = #0#3#isSet = true in #0#3 = #0#0.foo{core::String})! is core::String)) {
         return 0;
       }
       else {
diff --git a/pkg/front_end/testcases/patterns/relational_inside_map_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/relational_inside_map_pattern.dart.strong.transformed.expect
index f65fac4..d681f6e 100644
--- a/pkg/front_end/testcases/patterns/relational_inside_map_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/relational_inside_map_pattern.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
     {
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) =={core::Object::==}{(core::Object) → core::bool} #C2) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) =={core::Object::==}{(core::Object) → core::bool} #C2) {
         {
           break #L1;
         }
diff --git a/pkg/front_end/testcases/patterns/rest_pattern_in_map_pattern_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/rest_pattern_in_map_pattern_errors.dart.strong.transformed.expect
index d6c385d..1db2e49 100644
--- a/pkg/front_end/testcases/patterns/rest_pattern_in_map_pattern_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/rest_pattern_in_map_pattern_errors.dart.strong.transformed.expect
@@ -34,7 +34,7 @@
     final synthesized dynamic #0#0 = x;
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
+    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic})) {
       return 0;
     }
   }
@@ -44,7 +44,7 @@
     synthesized core::bool #1#4#isSet = false;
     synthesized dynamic #1#8;
     synthesized core::bool #1#8#isSet = false;
-    if(#1#0 is core::Map<dynamic, dynamic> && (!((#1#4#isSet ?{dynamic} #1#4{dynamic} : let final core::bool* #t3 = #1#4#isSet = true in #1#4 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#1#4#isSet ?{dynamic} #1#4{dynamic} : let final core::bool* #t4 = #1#4#isSet = true in #1#4 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool* #t5 = #1#8#isSet = true in #1#8 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool* #t6 = #1#8#isSet = true in #1#8 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+    if(#1#0 is core::Map<dynamic, dynamic> && (!((#1#4#isSet ?{dynamic} #1#4{dynamic} : let final core::bool #t3 = #1#4#isSet = true in #1#4 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#1#4#isSet ?{dynamic} #1#4{dynamic} : let final core::bool #t4 = #1#4#isSet = true in #1#4 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool #t5 = #1#8#isSet = true in #1#8 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool #t6 = #1#8#isSet = true in #1#8 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
       return 1;
     }
   }
@@ -54,7 +54,7 @@
     synthesized core::bool #2#4#isSet = false;
     synthesized dynamic #2#8;
     synthesized core::bool #2#8#isSet = false;
-    if(#2#0 is core::Map<dynamic, dynamic> && (!((#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool* #t7 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool* #t8 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#2#8#isSet ?{dynamic} #2#8{dynamic} : let final core::bool* #t9 = #2#8#isSet = true in #2#8 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#8#isSet ?{dynamic} #2#8{dynamic} : let final core::bool* #t10 = #2#8#isSet = true in #2#8 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
+    if(#2#0 is core::Map<dynamic, dynamic> && (!((#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool #t7 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#2#4#isSet ?{dynamic} #2#4{dynamic} : let final core::bool #t8 = #2#4#isSet = true in #2#4 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C1){(core::Object?) → dynamic}) && (!((#2#8#isSet ?{dynamic} #2#8{dynamic} : let final core::bool #t9 = #2#8#isSet = true in #2#8 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#2#8#isSet ?{dynamic} #2#8{dynamic} : let final core::bool #t10 = #2#8#isSet = true in #2#8 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C2){(core::Object?) → dynamic})) {
       return 2;
     }
   }
diff --git a/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.strong.transformed.expect
index e7c7060..11f466c 100644
--- a/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.strong.transformed.expect
@@ -27,14 +27,14 @@
     synthesized core::int #0#29;
     synthesized core::bool #0#29#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t3 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t3 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 0;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t7 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t8 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t7 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t8 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 1;
         }
@@ -42,7 +42,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t11 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t12 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t13 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t14 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t11 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t12 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t13 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t14 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           self::expect(expectedRest, rest);
           return 2;
@@ -51,7 +51,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t15 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t16 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t17 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && (let final core::List<dynamic> #t18 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t20 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t21 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t15 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t16 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t17 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && (let final core::List<dynamic> #t18 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t20 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t21 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           self::expect(expectedRest, rest);
           return 3;
@@ -60,7 +60,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool* #t22 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t23 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t24 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t25 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t26 = rest = #0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t27 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t28 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t29 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t30 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool* #t31 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t32 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t33 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
+      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool #t22 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t24 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t25 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t26 = rest = #0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t27 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t28 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t29 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t30 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool #t31 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t32 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t33 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
         {
           self::expect(expectedRest, rest);
           return 4;
@@ -69,7 +69,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool* #t34 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t35 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t36 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t37 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool* #t38 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t39 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t40 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t41 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t42 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic} && (let final core::List<dynamic> #t43 = rest = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t44 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t45 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::sublist}(1, (#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool* #t46 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t47 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t48 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t49 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t50 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool* #t51 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t52 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t53 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t54 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t55 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool* #t56 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t57 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t58 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
+      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool #t34 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t35 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t36 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t37 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool #t38 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t39 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t40 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t41 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t42 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic} && (let final core::List<dynamic> #t43 = rest = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t44 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t45 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::sublist}(1, (#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool #t46 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t47 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t48 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t49 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t50 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool #t51 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t52 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t53 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t54 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t55 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool #t56 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t57 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t58 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
         {
           self::expect(expectedRest, rest);
           return 5;
diff --git a/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.weak.transformed.expect
index e7c7060..11f466c 100644
--- a/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/rest_pattern_with_subpattern.dart.weak.transformed.expect
@@ -27,14 +27,14 @@
     synthesized core::int #0#29;
     synthesized core::bool #0#29#isSet = false;
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t1 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t3 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t3 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t4 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
         {
           return 0;
         }
       }
     }
     {
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t6 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t7 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t8 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t6 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t7 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t8 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           return 1;
         }
@@ -42,7 +42,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t11 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t12 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t13 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t14 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t11 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t12 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t13 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t14 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(2){(core::int, [core::int?]) → core::List<dynamic>} in true)) {
         {
           self::expect(expectedRest, rest);
           return 2;
@@ -51,7 +51,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t15 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t16 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t17 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && (let final core::List<dynamic> #t18 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t20 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t21 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t15 = #0#4#isSet = true in #0#4 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t16 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t17 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && (let final core::List<dynamic> #t18 = rest = #0#0{core::List<dynamic>}.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t20 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t21 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic})) {
         {
           self::expect(expectedRest, rest);
           return 3;
@@ -60,7 +60,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool* #t22 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t23 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t24 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t25 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t26 = rest = #0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t27 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t28 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t29 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t30 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool* #t31 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t32 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t33 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
+      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool #t22 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t24 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t25 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && (let final core::List<dynamic> #t26 = rest = #0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t27 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t28 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t29 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t30 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool #t31 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t32 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t33 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
         {
           self::expect(expectedRest, rest);
           return 4;
@@ -69,7 +69,7 @@
     }
     {
       hoisted core::List<dynamic> rest;
-      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool* #t34 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t35 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool* #t36 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t37 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool* #t38 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t39 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t40 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t41 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t42 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic} && (let final core::List<dynamic> #t43 = rest = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t44 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t45 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::sublist}(1, (#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool* #t46 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t47 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t48 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t49 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t50 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool* #t51 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool* #t52 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t53 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool* #t54 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t55 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool* #t56 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool* #t57 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t58 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
+      if(#0#0 is core::List<dynamic> && (#0#19#isSet ?{core::bool} #0#19{core::bool} : let final core::bool #t34 = #0#19#isSet = true in #0#19 = (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t35 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C5){(core::num) → core::bool}) && (#0#8#isSet ?{core::bool} #0#8{core::bool} : let final core::bool #t36 = #0#8#isSet = true in #0#8 = #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t37 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) && ((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool #t38 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t39 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t40 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t41 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t42 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}(0){(core::int) → dynamic} && (let final core::List<dynamic> #t43 = rest = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t44 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t45 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::sublist}(1, (#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool #t46 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t47 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t48 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t49 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t50 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::[]}((#0#29#isSet ?{core::int} #0#29{core::int} : let final core::bool #t51 = #0#29#isSet = true in #0#29 = (#0#22#isSet ?{core::List<dynamic>} #0#22{core::List<dynamic>} : let final core::bool #t52 = #0#22#isSet = true in #0#22 = #0#0{core::List<dynamic>}.{core::List::sublist}(2, (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t53 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int, [core::int?]) → core::List<dynamic>}).{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) && (#0#24#isSet ?{core::bool} #0#24{core::bool} : let final core::bool #t54 = #0#24#isSet = true in #0#24 = #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t55 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(2){(core::num) → core::int}){(core::int) → dynamic}) && (#0#26#isSet ?{core::bool} #0#26{core::bool} : let final core::bool #t56 = #0#26#isSet = true in #0#26 = #C6 =={core::num::==}{(core::Object) → core::bool} (#0#12#isSet ?{dynamic} #0#12{dynamic} : let final core::bool #t57 = #0#12#isSet = true in #0#12 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t58 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}))) {
         {
           self::expect(expectedRest, rest);
           return 5;
diff --git a/pkg/front_end/testcases/patterns/shared_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/shared_errors.dart.strong.transformed.expect
index 4b4ef69..4d94fcc 100644
--- a/pkg/front_end/testcases/patterns/shared_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/shared_errors.dart.strong.transformed.expect
@@ -164,7 +164,7 @@
       if(invalid-expression "pkg/front_end/testcases/patterns/shared_errors.dart:36:28: Error: The field 'field' is already matched in this pattern.
 Try removing the duplicate field.
     case (field: 1, field: 2): // Error
-                           ^" || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) && (let final core::int #t3 = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int} in invalid-expression "pkg/front_end/testcases/patterns/shared_errors.dart:37:33: Error: The field 'field' is already matched in this pattern.
+                           ^" || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) && (let final core::int #t3 = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int} in invalid-expression "pkg/front_end/testcases/patterns/shared_errors.dart:37:33: Error: The field 'field' is already matched in this pattern.
 Try removing the duplicate field.
     case Class(field: 1, field: 2): // Error
                                 ^")) {
@@ -225,8 +225,8 @@
     {
       hoisted core::int a;
       hoisted core::int b;
-      if(#0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in let final core::int #t7 = a = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in true) && !((#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t9 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int}) == null)) {
-        b = #0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t10 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int};
+      if(#0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in let final core::int #t7 = a = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in true) && !((#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t9 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int}) == null)) {
+        b = #0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t10 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int};
         {
           core::print(0);
         }
@@ -258,7 +258,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t12 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t13 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic})) {
+    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t12 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t13 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic})) {
       core::print(0);
     }
   }
@@ -268,7 +268,7 @@
     final synthesized dynamic #0#0 = o;
     synthesized dynamic #0#4;
     synthesized core::bool #0#4#isSet = false;
-    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t14 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool* #t15 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic})) {
+    if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t14 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && #C5 =={core::num::==}{(core::Object) → core::bool} (#0#4#isSet ?{dynamic} #0#4{dynamic} : let final core::bool #t15 = #0#4#isSet = true in #0#4 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic})) {
       core::print(0);
     }
   }
diff --git a/pkg/front_end/testcases/patterns/shared_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/shared_errors.dart.weak.transformed.expect
index 6fb4890..9c4e9ee 100644
--- a/pkg/front_end/testcases/patterns/shared_errors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/shared_errors.dart.weak.transformed.expect
@@ -164,7 +164,7 @@
       if(invalid-expression "pkg/front_end/testcases/patterns/shared_errors.dart:36:28: Error: The field 'field' is already matched in this pattern.
 Try removing the duplicate field.
     case (field: 1, field: 2): // Error
-                           ^" || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) && (let final core::int #t3 = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int} in invalid-expression "pkg/front_end/testcases/patterns/shared_errors.dart:37:33: Error: The field 'field' is already matched in this pattern.
+                           ^" || #0#0 is self::Class && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int}) && (let final core::int #t3 = #0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::Class}.{self::Class::field}{core::int} in invalid-expression "pkg/front_end/testcases/patterns/shared_errors.dart:37:33: Error: The field 'field' is already matched in this pattern.
 Try removing the duplicate field.
     case Class(field: 1, field: 2): // Error
                                 ^")) {
@@ -225,8 +225,8 @@
     {
       hoisted core::int a;
       hoisted core::int b;
-      if(#0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in let final core::int #t7 = a = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool* #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in true) && !((#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t9 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int}) == null)) {
-        b = #0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool* #t10 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int};
+      if(#0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final core::int #t5 = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t6 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in let final core::int #t7 = a = (#0#4#isSet ?{core::int} #0#4{core::int} : let final core::bool #t8 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}(0){(core::int) → core::int})! in true) && !((#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t9 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int}) == null)) {
+        b = #0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t10 = #0#6#isSet = true in #0#6 = #0#0.{core::List::[]}(1){(core::int) → core::int};
         {
           core::print(0);
         }
diff --git a/pkg/front_end/testcases/patterns/simple_assignments.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_assignments.dart.strong.transformed.expect
index f1fa627..40cab91 100644
--- a/pkg/front_end/testcases/patterns/simple_assignments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_assignments.dart.strong.transformed.expect
@@ -20,7 +20,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in true) && (let final core::int #t4 = b = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in true) && (let final core::int #t4 = b = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     } =>#0#0) as{TypeError,ForDynamic} core::List<core::int>;
     if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::int #t6 = c = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} as core::int in true)))
diff --git a/pkg/front_end/testcases/patterns/simple_assignments.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_assignments.dart.weak.transformed.expect
index f1fa627..40cab91 100644
--- a/pkg/front_end/testcases/patterns/simple_assignments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_assignments.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in true) && (let final core::int #t4 = b = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as core::int in true) && (let final core::int #t4 = b = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     } =>#0#0) as{TypeError,ForDynamic} core::List<core::int>;
     if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (let final core::int #t6 = c = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} as core::int in true)))
diff --git a/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.strong.transformed.expect
index fdb76f8..0030355 100644
--- a/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t8 = i;
@@ -33,7 +33,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t11 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t12 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t15 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t11 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t12 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t15 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t17 = i;
@@ -52,7 +52,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t21 = i1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t23 = n1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t21 = i1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t23 = n1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t24 = i1;
@@ -64,7 +64,7 @@
         final synthesized dynamic #1#0 = x as{TypeError,ForDynamic} core::List<core::int>;
         synthesized dynamic #1#8;
         synthesized core::bool #1#8#isSet = false;
-        if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C2){(core::num) → core::bool} && ((#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool* #t26 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) is core::int && (let final core::int #t27 = i2 = (#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool* #t28 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t29 = n2 = #1#0{core::List<dynamic>}.{core::List::[]}(3){(core::int) → dynamic} in true)))
+        if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C2){(core::num) → core::bool} && ((#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool #t26 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) is core::int && (let final core::int #t27 = i2 = (#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool #t28 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t29 = n2 = #1#0{core::List<dynamic>}.{core::List::[]}(3){(core::int) → dynamic} in true)))
           throw{for-error-handling} new core::StateError::•("Pattern matching error");
       }
       final core::int #t30 = i2;
diff --git a/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.weak.transformed.expect
index fdb76f8..0030355 100644
--- a/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_c_style_pattern_for_in_collections.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t8 = i;
@@ -33,7 +33,7 @@
       synthesized core::bool #0#6#isSet = false;
       synthesized dynamic #0#7;
       synthesized core::bool #0#7#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t11 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t12 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t15 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t11 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t12 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t14 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t15 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t16 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t17 = i;
@@ -52,7 +52,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t21 = i1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t23 = n1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t20 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t21 = i1 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t22 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t23 = n1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t24 = i1;
@@ -64,7 +64,7 @@
         final synthesized dynamic #1#0 = x as{TypeError,ForDynamic} core::List<core::int>;
         synthesized dynamic #1#8;
         synthesized core::bool #1#8#isSet = false;
-        if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C2){(core::num) → core::bool} && ((#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool* #t26 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) is core::int && (let final core::int #t27 = i2 = (#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool* #t28 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t29 = n2 = #1#0{core::List<dynamic>}.{core::List::[]}(3){(core::int) → dynamic} in true)))
+        if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C2){(core::num) → core::bool} && ((#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool #t26 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) is core::int && (let final core::int #t27 = i2 = (#1#8#isSet ?{dynamic} #1#8{dynamic} : let final core::bool #t28 = #1#8#isSet = true in #1#8 = #1#0{core::List<dynamic>}.{core::List::[]}(2){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (let final dynamic #t29 = n2 = #1#0{core::List<dynamic>}.{core::List::[]}(3){(core::int) → dynamic} in true)))
           throw{for-error-handling} new core::StateError::•("Pattern matching error");
       }
       final core::int #t30 = i2;
diff --git a/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.strong.transformed.expect
index bed333a..293ad0d 100644
--- a/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int a;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
         return a;
       }
     }
diff --git a/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.weak.transformed.expect
index bed333a..293ad0d 100644
--- a/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_guard_clause_runtime_test.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int a;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
         return a;
       }
     }
diff --git a/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.strong.transformed.expect
index ed2ff41..a5fb88c 100644
--- a/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.strong.transformed.expect
@@ -11,8 +11,8 @@
       synthesized core::bool #0#6#isSet = false;
       {
         hoisted core::int y;
-        if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
-          y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
+        if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
+          y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
           #t1.{core::List::add}{Invariant}(y){(core::int) → void};
         }
       }
diff --git a/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.weak.transformed.expect
index ed2ff41..a5fb88c 100644
--- a/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.weak.transformed.expect
@@ -11,8 +11,8 @@
       synthesized core::bool #0#6#isSet = false;
       {
         hoisted core::int y;
-        if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
-          y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
+        if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
+          y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
           #t1.{core::List::add}{Invariant}(y){(core::int) → void};
         }
       }
diff --git a/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.strong.transformed.expect
index c84376d..3534cb3 100644
--- a/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
           final synthesized dynamic #0#0 = #t1;
           synthesized dynamic #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         if(y.{core::num::%}(10){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 0) {
@@ -37,7 +37,7 @@
           synthesized core::bool #0#1#isSet = false;
           synthesized core::String #0#4;
           synthesized core::bool #0#4#isSet = false;
-          if(!((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String}) is core::String && (let final core::String #t9 = y = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String} in true))))
+          if(!((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String}) is core::String && (let final core::String #t9 = y = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         if(y.{core::String::startsWith}("f"){(core::Pattern, [core::int]) → core::bool}) {
@@ -59,7 +59,7 @@
           final synthesized dynamic #0#0 = #t12;
           synthesized dynamic #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t14 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t14 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         return y;
diff --git a/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.weak.transformed.expect
index c84376d..3534cb3 100644
--- a/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_pattern_for_in.dart.weak.transformed.expect
@@ -13,7 +13,7 @@
           final synthesized dynamic #0#0 = #t1;
           synthesized dynamic #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         if(y.{core::num::%}(10){(core::num) → core::int} =={core::num::==}{(core::Object) → core::bool} 0) {
@@ -37,7 +37,7 @@
           synthesized core::bool #0#1#isSet = false;
           synthesized core::String #0#4;
           synthesized core::bool #0#4#isSet = false;
-          if(!((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String}) is core::String && (let final core::String #t9 = y = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool* #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String} in true))))
+          if(!((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t6 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t8 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String}) is core::String && (let final core::String #t9 = y = #0#4#isSet ?{core::String} #0#4{core::String} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0.{core::List::[]}((#0#1#isSet ?{core::int} #0#1{core::int} : let final core::bool #t11 = #0#1#isSet = true in #0#1 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → core::String} in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         if(y.{core::String::startsWith}("f"){(core::Pattern, [core::int]) → core::bool}) {
@@ -59,7 +59,7 @@
           final synthesized dynamic #0#0 = #t12;
           synthesized dynamic #0#6;
           synthesized core::bool #0#6#isSet = false;
-          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t14 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+          if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t13 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t14 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t15 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
             throw{for-error-handling} new core::StateError::•("Pattern matching error");
         }
         return y;
diff --git a/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.strong.transformed.expect
index 5496365..8a7e140 100644
--- a/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.strong.transformed.expect
@@ -9,7 +9,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t4 = i;
diff --git a/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.weak.transformed.expect
index 5496365..8a7e140 100644
--- a/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_pattern_for_statements.dart.weak.transformed.expect
@@ -9,7 +9,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t4 = i;
diff --git a/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.strong.transformed.expect
index 483ec6f..f972f3b 100644
--- a/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
     final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
-    if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+    if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   return y;
@@ -24,7 +24,7 @@
     synthesized core::bool #0#6#isSet = false;
     synthesized dynamic #0#7;
     synthesized core::bool #0#7#isSet = false;
-    if(!(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::String && (let final core::String #t10 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::String in true))))
+    if(!(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::String && (let final core::String #t10 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::String in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   return a.{core::String::+}(b){(core::String) → core::String};
diff --git a/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.weak.transformed.expect
index 483ec6f..f972f3b 100644
--- a/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_pattern_variable_declaration.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
     final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
     synthesized dynamic #0#6;
     synthesized core::bool #0#6#isSet = false;
-    if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+    if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   return y;
@@ -24,7 +24,7 @@
     synthesized core::bool #0#6#isSet = false;
     synthesized dynamic #0#7;
     synthesized core::bool #0#7#isSet = false;
-    if(!(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::String && (let final core::String #t10 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::String in true))))
+    if(!(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::String && (let final core::String #t10 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::String in true))))
       throw{for-error-handling} new core::StateError::•("Pattern matching error");
   }
   return a.{core::String::+}(b){(core::String) → core::String};
diff --git a/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.strong.transformed.expect
index 9fedf06..f52958e 100644
--- a/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.strong.transformed.expect
@@ -9,8 +9,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int y;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
         {
           return y;
         }
@@ -28,8 +28,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int y;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
         {
           return y;
         }
@@ -49,8 +49,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int y;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::int) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::int;
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::int) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::int;
         {
           return y;
         }
diff --git a/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.weak.transformed.expect
index 9fedf06..f52958e 100644
--- a/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_rest_pattern.dart.weak.transformed.expect
@@ -9,8 +9,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int y;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
         {
           return y;
         }
@@ -28,8 +28,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int y;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int;
         {
           return y;
         }
@@ -49,8 +49,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int y;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t7 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::int) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::int;
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::>=}(#C1){(core::num) → core::bool} && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t7 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) is core::int) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}((#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t9 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int) → dynamic}) as{Unchecked} core::int;
         {
           return y;
         }
diff --git a/pkg/front_end/testcases/patterns/simple_runtime_test.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_runtime_test.dart.strong.transformed.expect
index 8b3a357..932d7bc 100644
--- a/pkg/front_end/testcases/patterns/simple_runtime_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_runtime_test.dart.strong.transformed.expect
@@ -9,8 +9,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::String y;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String;
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String;
         {
           return y;
         }
diff --git a/pkg/front_end/testcases/patterns/simple_runtime_test.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_runtime_test.dart.weak.transformed.expect
index 8b3a357..932d7bc 100644
--- a/pkg/front_end/testcases/patterns/simple_runtime_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_runtime_test.dart.weak.transformed.expect
@@ -9,8 +9,8 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::String y;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String) {
-        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String;
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String) {
+        y = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String;
         {
           return y;
         }
diff --git a/pkg/front_end/testcases/patterns/simple_switch.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_switch.dart.strong.transformed.expect
index 075336d..81c9801 100644
--- a/pkg/front_end/testcases/patterns/simple_switch.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_switch.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     }
     {
       hoisted core::double z;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t3 = z = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true))) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t3 = z = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true))) {
         {
           return z;
         }
diff --git a/pkg/front_end/testcases/patterns/simple_switch.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_switch.dart.weak.transformed.expect
index 075336d..81c9801 100644
--- a/pkg/front_end/testcases/patterns/simple_switch.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_switch.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
     }
     {
       hoisted core::double z;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t3 = z = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true))) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::double && (let final core::double #t3 = z = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::double in true))) {
         {
           return z;
         }
diff --git a/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.strong.transformed.expect
index 584ff61..fed647c 100644
--- a/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
     {
       lowered hoisted core::int a#case#0;
       lowered hoisted core::double a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a#case#0.{core::int::isEven}{core::bool} && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::double && (let final core::double #t9 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::double in true)) && a#case#1.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool} && (let final core::double #t11 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a#case#0.{core::int::isEven}{core::bool} && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::double && (let final core::double #t9 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::double in true)) && a#case#1.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool} && (let final core::double #t11 = #t1 = a#case#1 in true)) {
         core::int a = invalid-expression "pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart:10:14: Error: Variable pattern 'a' doesn't have the same type or finality in all cases.
       return a;
              ^";
diff --git a/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.weak.transformed.expect
index 584ff61..fed647c 100644
--- a/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart.weak.transformed.expect
@@ -23,7 +23,7 @@
     {
       lowered hoisted core::int a#case#0;
       lowered hoisted core::double a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a#case#0.{core::int::isEven}{core::bool} && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::double && (let final core::double #t9 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::double in true)) && a#case#1.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool} && (let final core::double #t11 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t2 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a#case#0.{core::int::isEven}{core::bool} && (let final core::int #t6 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::double && (let final core::double #t9 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::double in true)) && a#case#1.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool} && (let final core::double #t11 = #t1 = a#case#1 in true)) {
         core::int a = invalid-expression "pkg/front_end/testcases/patterns/simple_switch_with_guards_error.dart:10:14: Error: Variable pattern 'a' doesn't have the same type or finality in all cases.
       return a;
              ^";
diff --git a/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.strong.transformed.expect
index f4aa326..e3cf14a 100644
--- a/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int a;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
         {
           return a;
         }
@@ -39,7 +39,7 @@
     {
       lowered hoisted core::num a#case#0;
       lowered hoisted core::num a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::num && (let final core::num #t7 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#0 is core::int && a#case#0{core::int}.{core::int::isEven}{core::bool}) && (let final core::num #t9 = #t4 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::num && (let final core::num #t12 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t13 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#1 is core::double && a#case#1{core::double}.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool}) && (let final core::num #t14 = #t4 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::num && (let final core::num #t7 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#0 is core::int && a#case#0{core::int}.{core::int::isEven}{core::bool}) && (let final core::num #t9 = #t4 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::num && (let final core::num #t12 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t13 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#1 is core::double && a#case#1{core::double}.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool}) && (let final core::num #t14 = #t4 = a#case#1 in true)) {
         core::num a = #t4{core::num};
         {
           return a;
diff --git a/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.weak.transformed.expect
index f4aa326..e3cf14a 100644
--- a/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/simple_switch_with_guards_runtime.dart.weak.transformed.expect
@@ -10,7 +10,7 @@
     synthesized core::bool #0#6#isSet = false;
     {
       hoisted core::int a;
-      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
+      if(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t1 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t2 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && a.{core::num::>}(0){(core::num) → core::bool}) {
         {
           return a;
         }
@@ -39,7 +39,7 @@
     {
       lowered hoisted core::num a#case#0;
       lowered hoisted core::num a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::num && (let final core::num #t7 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#0 is core::int && a#case#0{core::int}.{core::int::isEven}{core::bool}) && (let final core::num #t9 = #t4 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t10 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::num && (let final core::num #t12 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t13 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#1 is core::double && a#case#1{core::double}.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool}) && (let final core::num #t14 = #t4 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t5 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t6 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::num && (let final core::num #t7 = a#case#0 = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#0 is core::int && a#case#0{core::int}.{core::int::isEven}{core::bool}) && (let final core::num #t9 = #t4 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t10 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t11 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::num && (let final core::num #t12 = a#case#1 = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t13 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::num in true)) && (a#case#1 is core::double && a#case#1{core::double}.{core::double::ceil}(){() → core::int}.{core::int::isOdd}{core::bool}) && (let final core::num #t14 = #t4 = a#case#1 in true)) {
         core::num a = #t4{core::num};
         {
           return a;
diff --git a/pkg/front_end/testcases/patterns/switch_encoding.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/switch_encoding.dart.strong.transformed.expect
index 3df75db..c6b7b75 100644
--- a/pkg/front_end/testcases/patterns/switch_encoding.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/switch_encoding.dart.strong.transformed.expect
@@ -44,7 +44,7 @@
     {
       lowered hoisted dynamic a#case#0;
       lowered hoisted dynamic a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t3 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t4 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t6 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t7 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t3 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t4 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t6 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t7 = #t1 = a#case#1 in true)) {
         dynamic a = #t1{dynamic};
         {
           core::print(a);
@@ -54,7 +54,7 @@
     }
     {
       hoisted dynamic a;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t8 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t9 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t10 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t8 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t9 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t10 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
         {
           core::print(a);
         }
@@ -74,7 +74,7 @@
     {
       lowered hoisted dynamic a#case#0;
       lowered hoisted dynamic a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t12 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t13 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t14 = #t11 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t15 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t16 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t17 = #t11 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t12 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t13 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t14 = #t11 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t15 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t16 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t17 = #t11 = a#case#1 in true)) {
         dynamic a = #t11{dynamic};
         {
           core::print(a);
@@ -84,7 +84,7 @@
     }
     {
       hoisted dynamic a;
-      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t18 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t19 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t20 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+      if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t18 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t19 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t20 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
         {
           core::print(a);
           break #L2;
@@ -115,7 +115,7 @@
       {
         lowered hoisted dynamic a#case#0;
         lowered hoisted dynamic a#case#1;
-        if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t23 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t24 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t25 = #t22 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t26 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t27 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t28 = #t22 = a#case#1 in true)) {
+        if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t23 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t24 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t25 = #t22 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t26 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t27 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t28 = #t22 = a#case#1 in true)) {
           dynamic a = #t22{dynamic};
           {
             core::print(a);
@@ -125,7 +125,7 @@
       }
       {
         hoisted dynamic a;
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t29 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t30 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t31 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t29 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t30 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t31 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
           {
             core::print(a);
             #t21 = 0;
@@ -193,7 +193,7 @@
       }
       {
         hoisted dynamic a;
-        if(#2#0 is core::Map<dynamic, dynamic> && (!((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t34 = #2#9#isSet = true in #2#9 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t35 = a = #2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool* #t36 = #2#9#isSet = true in #2#9 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+        if(#2#0 is core::Map<dynamic, dynamic> && (!((#2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t34 = #2#9#isSet = true in #2#9 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #2#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t35 = a = #2#9#isSet ?{dynamic} #2#9{dynamic} : let final core::bool #t36 = #2#9#isSet = true in #2#9 = #2#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
           {
             core::print(a);
             #L9:
@@ -210,7 +210,7 @@
                 {
                   lowered hoisted dynamic a#case#0;
                   lowered hoisted dynamic a#case#1;
-                  if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t39 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t40 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t41 = #t38 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t42 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t43 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t44 = #t38 = a#case#1 in true)) {
+                  if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t39 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t40 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t41 = #t38 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t42 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t43 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t44 = #t38 = a#case#1 in true)) {
                     dynamic a = #t38{dynamic};
                     {
                       core::print(a);
@@ -220,7 +220,7 @@
                 }
                 {
                   hoisted dynamic a;
-                  if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t45 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t46 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool* #t47 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+                  if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t45 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t46 = a = #0#13#isSet ?{dynamic} #0#13{dynamic} : let final core::bool #t47 = #0#13#isSet = true in #0#13 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
                     {
                       core::print(a);
                       #t32 = 1;
@@ -323,7 +323,7 @@
                 {
                   lowered hoisted dynamic a#case#0;
                   lowered hoisted dynamic a#case#1;
-                  if(#1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool* #t50 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t51 = a#case#0 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t52 = #t49 = a#case#0 in true) || #1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool* #t53 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t54 = a#case#1 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t55 = #t49 = a#case#1 in true)) {
+                  if(#1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool #t50 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t51 = a#case#0 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t52 = #t49 = a#case#0 in true) || #1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool #t53 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t54 = a#case#1 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t55 = #t49 = a#case#1 in true)) {
                     dynamic a = #t49{dynamic};
                     {
                       core::print(a);
@@ -333,7 +333,7 @@
                 }
                 {
                   hoisted dynamic a;
-                  if(#1#0 is core::Map<dynamic, dynamic> && (!((#1#13#isSet ?{dynamic} #1#13{dynamic} : let final core::bool* #t56 = #1#13#isSet = true in #1#13 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t57 = a = #1#13#isSet ?{dynamic} #1#13{dynamic} : let final core::bool* #t58 = #1#13#isSet = true in #1#13 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
+                  if(#1#0 is core::Map<dynamic, dynamic> && (!((#1#13#isSet ?{dynamic} #1#13{dynamic} : let final core::bool #t56 = #1#13#isSet = true in #1#13 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #1#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool}) && (let final dynamic #t57 = a = #1#13#isSet ?{dynamic} #1#13{dynamic} : let final core::bool #t58 = #1#13#isSet = true in #1#13 = #1#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic} in true)) {
                     {
                       core::print(a);
                       continue #L14;
@@ -533,8 +533,8 @@
       }
       {
         hoisted dynamic a;
-        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t60 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) {
-          a = #0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool* #t61 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic};
+        if(#0#0 is core::Map<dynamic, dynamic> && (!((#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t60 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic}) == null) || null is dynamic && #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C4){(core::Object?) → core::bool})) {
+          a = #0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t61 = #0#9#isSet = true in #0#9 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C4){(core::Object?) → dynamic};
           #t59 = a;
           break #L36;
         }
diff --git a/pkg/front_end/testcases/patterns/switch_encoding.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/switch_encoding.dart.weak.transformed.expect
index f803d6a..6b561e7 100644
--- a/pkg/front_end/testcases/patterns/switch_encoding.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/switch_encoding.dart.weak.transformed.expect
@@ -43,7 +43,7 @@
     {
       lowered hoisted dynamic a#case#0;
       lowered hoisted dynamic a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t3 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t4 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t6 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t7 = #t1 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t3 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t4 = #t1 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t5 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t6 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t7 = #t1 = a#case#1 in true)) {
         dynamic a = #t1{dynamic};
         {
           core::print(a);
@@ -71,7 +71,7 @@
     {
       lowered hoisted dynamic a#case#0;
       lowered hoisted dynamic a#case#1;
-      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t10 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t11 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t12 = #t9 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t13 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t14 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t15 = #t9 = a#case#1 in true)) {
+      if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t10 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t11 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t12 = #t9 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t13 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t14 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t15 = #t9 = a#case#1 in true)) {
         dynamic a = #t9{dynamic};
         {
           core::print(a);
@@ -110,7 +110,7 @@
       {
         lowered hoisted dynamic a#case#0;
         lowered hoisted dynamic a#case#1;
-        if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t20 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t21 = #t18 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t22 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t23 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t24 = #t18 = a#case#1 in true)) {
+        if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t19 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t20 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t21 = #t18 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t22 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t23 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t24 = #t18 = a#case#1 in true)) {
           dynamic a = #t18{dynamic};
           {
             core::print(a);
@@ -201,7 +201,7 @@
                 {
                   lowered hoisted dynamic a#case#0;
                   lowered hoisted dynamic a#case#1;
-                  if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t31 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t32 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t33 = #t30 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool* #t34 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t35 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t36 = #t30 = a#case#1 in true)) {
+                  if(#0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t31 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t32 = a#case#0 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t33 = #t30 = a#case#0 in true) || #0#0 is core::List<dynamic> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final core::bool #t34 = #0#2#isSet = true in #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t35 = a#case#1 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t36 = #t30 = a#case#1 in true)) {
                     dynamic a = #t30{dynamic};
                     {
                       core::print(a);
@@ -312,7 +312,7 @@
                 {
                   lowered hoisted dynamic a#case#0;
                   lowered hoisted dynamic a#case#1;
-                  if(#1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool* #t40 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t41 = a#case#0 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t42 = #t39 = a#case#0 in true) || #1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool* #t43 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t44 = a#case#1 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t45 = #t39 = a#case#1 in true)) {
+                  if(#1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool #t40 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C4 && (let final dynamic #t41 = a#case#0 = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && a#case#0{dynamic}.>(5) as{TypeError} core::bool && (let final dynamic #t42 = #t39 = a#case#0 in true) || #1#0 is core::List<dynamic> && (#1#2#isSet ?{core::int} #1#2{core::int} : let final core::bool #t43 = #1#2#isSet = true in #1#2 = #1#0{core::List<dynamic>}.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C7 && (let final dynamic #t44 = a#case#1 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true) && a#case#1{dynamic}.<(5) as{TypeError} core::bool && (let final dynamic #t45 = #t39 = a#case#1 in true)) {
                     dynamic a = #t39{dynamic};
                     {
                       core::print(a);
diff --git a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.strong.transformed.expect
index dcc35c7..83a410f 100644
--- a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.strong.transformed.expect
@@ -60,7 +60,7 @@
       {
         hoisted core::int a;
         hoisted core::int b;
-        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t9 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
+        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t9 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
           return a.{core::num::+}(b){(core::num) → core::int};
         }) is dynamic) {
           #t3 = self::captured!(a = b){(dynamic) → dynamic};
@@ -70,7 +70,7 @@
       {
         hoisted core::String a;
         hoisted core::String b;
-        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t13 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t16 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
+        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t13 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t16 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
           return a.{core::String::+}(b){(core::String) → core::String};
         }) is dynamic) {
           #t3 = self::captured!(a = b){(dynamic) → dynamic};
@@ -98,7 +98,7 @@
     {
       hoisted core::int a;
       hoisted core::int b;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t18 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t20 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t22 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t23 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t24 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t18 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t20 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t22 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t23 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t24 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
         return a.{core::num::+}(b){(core::num) → core::int};
       }) is dynamic) {
         {
@@ -109,7 +109,7 @@
     {
       hoisted core::String a;
       hoisted core::String b;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t25 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t26 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t27 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t29 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t30 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t31 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t25 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t26 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t27 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t29 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t30 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t31 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
         return a.{core::String::+}(b){(core::String) → core::String};
       }) is dynamic) {
         {
diff --git a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.weak.transformed.expect
index 279893e..06c73fc 100644
--- a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.weak.transformed.expect
@@ -62,7 +62,7 @@
       {
         hoisted core::int a;
         hoisted core::int b;
-        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t9 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
+        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t6 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t9 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
           return a.{core::num::+}(b){(core::num) → core::int};
         }) is dynamic) {
           #t3 = self::captured!(a = b){(dynamic) → dynamic};
@@ -72,7 +72,7 @@
       {
         hoisted core::String a;
         hoisted core::String b;
-        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t13 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t15 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t16 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
+        if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t11 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t12 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t13 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t14 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t15 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t16 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t17 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
           return a.{core::String::+}(b){(core::String) → core::String};
         }) is dynamic) {
           #t3 = self::captured!(a = b){(dynamic) → dynamic};
@@ -101,7 +101,7 @@
     {
       hoisted core::int a;
       hoisted core::int b;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t18 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t20 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t22 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t23 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t24 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t18 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t19 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t20 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t21 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t22 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t23 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t24 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)) && (self::captured = (dynamic x) → core::int {
         return a.{core::num::+}(b){(core::num) → core::int};
       }) is dynamic) {
         {
@@ -112,7 +112,7 @@
     {
       hoisted core::String a;
       hoisted core::String b;
-      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool* #t25 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t26 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t27 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t29 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t30 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #t31 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
+      if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t25 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2) && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t26 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::String && (let final core::String #t27 = a = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t28 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::String in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t29 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::String && (let final core::String #t30 = b = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool #t31 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::String in true)) && (self::captured = (dynamic x) → core::String {
         return a.{core::String::+}(b){(core::String) → core::String};
       }) is dynamic) {
         {
diff --git a/pkg/front_end/testcases/patterns/variable_names.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/variable_names.dart.strong.transformed.expect
index feb5bd4..3638314 100644
--- a/pkg/front_end/testcases/patterns/variable_names.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/variable_names.dart.strong.transformed.expect
@@ -42,10 +42,10 @@
       hoisted core::int baz;
       hoisted core::double boz;
       hoisted core::int foobar;
-      if(#0#0 is self::A && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in let final core::int? #t3 = foo = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in true) && (let final core::int #t5 = bar = #0#0{self::A}.{self::A::bar}{core::int} in true) && !((#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool* #t6 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) == null)) {
-        baz = let core::int? #t7 = #0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool* #t8 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?} in #t7 == null ?{core::int} #t7 as{Unchecked} core::int : #t7{core::int};
-        (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool* #t9 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
-        boz = (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool* #t10 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
+      if(#0#0 is self::A && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in let final core::int? #t3 = foo = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in true) && (let final core::int #t5 = bar = #0#0{self::A}.{self::A::bar}{core::int} in true) && !((#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t6 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) == null)) {
+        baz = let core::int? #t7 = #0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t8 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?} in #t7 == null ?{core::int} #t7 as{Unchecked} core::int : #t7{core::int};
+        (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t9 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
+        boz = (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t10 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
         foobar = #0#0{self::A}.{self::A::foobar}{core::int};
         {
           return 0;
@@ -65,10 +65,10 @@
           hoisted dynamic baz;
           hoisted core::double boz;
           hoisted dynamic foobar;
-          if(#1#0 is (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final core::Object? #t11 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t12 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in let final core::Object? #t13 = foo = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t14 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in true) && (let final core::Object? #t15 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && !((#1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool* #t16 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}) == null)) {
-            baz = #1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool* #t17 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?};
-            (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool* #t18 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
-            boz = (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool* #t19 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
+          if(#1#0 is (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final core::Object? #t11 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t12 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in let final core::Object? #t13 = foo = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t14 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in true) && (let final core::Object? #t15 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && !((#1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t16 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}) == null)) {
+            baz = #1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t17 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?};
+            (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t18 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
+            boz = (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t19 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
             foobar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foobar{core::Object?};
             {
               return 1;
diff --git a/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect
index 90675d1..180aea2 100644
--- a/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/variable_names.dart.weak.transformed.expect
@@ -42,10 +42,10 @@
       hoisted core::int baz;
       hoisted core::double boz;
       hoisted core::int foobar;
-      if(#0#0 is self::A && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t2 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in let final core::int? #t3 = foo = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool* #t4 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in true) && (let final core::int #t5 = bar = #0#0{self::A}.{self::A::bar}{core::int} in true) && !((#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool* #t6 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) == null)) {
-        baz = (#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool* #t7 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) as{Unchecked} core::int;
-        (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool* #t8 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
-        boz = (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool* #t9 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
+      if(#0#0 is self::A && (let final core::int? #t1 = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t2 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in let final core::int? #t3 = foo = (#0#2#isSet ?{core::int?} #0#2{core::int?} : let final core::bool #t4 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::foo}{core::int?})! in true) && (let final core::int #t5 = bar = #0#0{self::A}.{self::A::bar}{core::int} in true) && !((#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t6 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) == null)) {
+        baz = (#0#5#isSet ?{core::int?} #0#5{core::int?} : let final core::bool #t7 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::baz}{core::int?}) as{Unchecked} core::int;
+        (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t8 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
+        boz = (#0#7#isSet ?{core::num} #0#7{core::num} : let final core::bool #t9 = #0#7#isSet = true in #0#7 = #0#0{self::A}.{self::A::boz}{core::num}) as core::double;
         foobar = #0#0{self::A}.{self::A::foobar}{core::int};
         {
           return 0;
@@ -65,10 +65,10 @@
           hoisted dynamic baz;
           hoisted core::double boz;
           hoisted dynamic foobar;
-          if(#1#0 is (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final core::Object? #t10 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t11 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in let final core::Object? #t12 = foo = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool* #t13 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in true) && (let final core::Object? #t14 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && !((#1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool* #t15 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}) == null)) {
-            baz = #1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool* #t16 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?};
-            (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool* #t17 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
-            boz = (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool* #t18 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
+          if(#1#0 is (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final core::Object? #t10 = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t11 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in let final core::Object? #t12 = foo = (#1#2#isSet ?{core::Object?} #1#2{core::Object?} : let final core::bool #t13 = #1#2#isSet = true in #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?})! in true) && (let final core::Object? #t14 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && !((#1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t15 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?}) == null)) {
+            baz = #1#5#isSet ?{core::Object?} #1#5{core::Object?} : let final core::bool #t16 = #1#5#isSet = true in #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?};
+            (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t17 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
+            boz = (#1#7#isSet ?{core::Object?} #1#7{core::Object?} : let final core::bool #t18 = #1#7#isSet = true in #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?}) as core::double;
             foobar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foobar{core::Object?};
             {
               return 1;
diff --git a/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.strong.transformed.expect
index 9f05045..eb2282e 100644
--- a/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.strong.transformed.expect
@@ -24,7 +24,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t6 = i;
@@ -42,7 +42,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t8 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t9 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t8 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t9 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t10 = i;
diff --git a/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.weak.transformed.expect
index 9f05045..eb2282e 100644
--- a/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/patterns/variable_scoping_in_pattern_for_statements.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t3 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t4 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t6 = i;
@@ -42,7 +42,7 @@
       final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>;
       synthesized dynamic #0#6;
       synthesized core::bool #0#6#isSet = false;
-      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t8 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #t9 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
+      if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t8 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t9 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true))))
         throw{for-error-handling} new core::StateError::•("Pattern matching error");
     }
     final core::int #t10 = i;
diff --git a/pkg/front_end/testcases/rasta/previsit_deferred.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/previsit_deferred.dart.strong.transformed.expect
index 15f8439..f7683b4 100644
--- a/pkg/front_end/testcases/rasta/previsit_deferred.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/previsit_deferred.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::foo();
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::foo();
 }
 
 library deferred_lib;
diff --git a/pkg/front_end/testcases/rasta/previsit_deferred.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/previsit_deferred.dart.weak.transformed.expect
index 15f8439..f7683b4 100644
--- a/pkg/front_end/testcases/rasta/previsit_deferred.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/previsit_deferred.dart.weak.transformed.expect
@@ -7,7 +7,7 @@
 
 static method main() → dynamic {}
 static method test() → dynamic {
-  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::foo();
+  let final core::Object? #t1 = CheckLibraryIsLoaded(lib) in def::foo();
 }
 
 library deferred_lib;
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect
index d388d41..e1ac997 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.expect
@@ -78,13 +78,13 @@
   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} 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} self::NoSuchMethod::T?;
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 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(#C8, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
@@ -119,9 +119,9 @@
 constants  {
   #C1 = null
   #C2 = #x
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = <dynamic>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #x=
   #C7 = #method
   #C8 = #y=
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect
index 2a1071f..2b8455c 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.strong.transformed.expect
@@ -78,13 +78,13 @@
   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} 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} self::NoSuchMethod::T?;
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 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(#C8, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
@@ -119,9 +119,9 @@
 constants  {
   #C1 = null
   #C2 = #x
-  #C3 = <core::Type*>[]
+  #C3 = <core::Type>[]
   #C4 = <dynamic>[]
-  #C5 = <core::Symbol*, dynamic>{}
+  #C5 = <core::Symbol, dynamic>{}
   #C6 = #x=
   #C7 = #method
   #C8 = #y=
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 d388d41..0211be2 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
@@ -78,13 +78,13 @@
   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} 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} self::NoSuchMethod::T?;
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 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(#C8, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.modular.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.modular.expect
index d388d41..0211be2 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.modular.expect
@@ -78,13 +78,13 @@
   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} 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} self::NoSuchMethod::T?;
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 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(#C8, 2, #C3, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
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 d1f27a7..adbf35f 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} 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} self::NoSuchMethod::T?;
   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>{}))){(core::Invocation) → dynamic};
   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} 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} 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>{}))){(core::Invocation) → 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 2a1071f..1cd5444 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
@@ -78,13 +78,13 @@
   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} 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} self::NoSuchMethod::T?;
   no-such-method-forwarder set x(self::NoSuchMethod::T? value) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 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(#C6, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
   no-such-method-forwarder method method(self::NoSuchMethod::T% x) → self::NoSuchMethod::T%
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
+    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic} as{TypeError,ForDynamic} self::NoSuchMethod::T%;
   no-such-method-forwarder set y(self::NoSuchMethod::T% x) → void
-    return this.{self::NoSuchMethod::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 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(#C8, 2, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol, dynamic>(#C5))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   self::A<core::int, core::num, core::String> a = new self::A::•<core::int, core::num, core::String>();
diff --git a/pkg/kernel/lib/type_checker.dart b/pkg/kernel/lib/type_checker.dart
index 08cb541..070641f 100644
--- a/pkg/kernel/lib/type_checker.dart
+++ b/pkg/kernel/lib/type_checker.dart
@@ -430,13 +430,13 @@
 
   @override
   DartType visitBoolLiteral(BoolLiteral node) {
-    return environment.coreTypes.boolLegacyRawType;
+    return environment.coreTypes.boolNonNullableRawType;
   }
 
   @override
   DartType visitConditionalExpression(ConditionalExpression node) {
     node.condition = checkAndDowncastExpression(
-        node.condition, environment.coreTypes.boolLegacyRawType);
+        node.condition, environment.coreTypes.boolNonNullableRawType);
     node.then = checkAndDowncastExpression(node.then, node.staticType);
     node.otherwise =
         checkAndDowncastExpression(node.otherwise, node.staticType);
@@ -458,7 +458,7 @@
 
   @override
   DartType visitDoubleLiteral(DoubleLiteral node) {
-    return environment.coreTypes.doubleLegacyRawType;
+    return environment.coreTypes.doubleNonNullableRawType;
   }
 
   @override
@@ -469,7 +469,7 @@
 
   @override
   DartType visitIntLiteral(IntLiteral node) {
-    return environment.coreTypes.intLegacyRawType;
+    return environment.coreTypes.intNonNullableRawType;
   }
 
   @override
@@ -481,7 +481,7 @@
   @override
   DartType visitIsExpression(IsExpression node) {
     visitExpression(node.operand);
-    return environment.coreTypes.boolLegacyRawType;
+    return environment.coreTypes.boolNonNullableRawType;
   }
 
   @override
@@ -595,10 +595,10 @@
   @override
   DartType visitLogicalExpression(LogicalExpression node) {
     node.left = checkAndDowncastExpression(
-        node.left, environment.coreTypes.boolLegacyRawType);
+        node.left, environment.coreTypes.boolNonNullableRawType);
     node.right = checkAndDowncastExpression(
-        node.right, environment.coreTypes.boolLegacyRawType);
-    return environment.coreTypes.boolLegacyRawType;
+        node.right, environment.coreTypes.boolNonNullableRawType);
+    return environment.coreTypes.boolNonNullableRawType;
   }
 
   @override
@@ -614,7 +614,7 @@
   @override
   DartType visitNot(Not node) {
     visitExpression(node.operand);
-    return environment.coreTypes.boolLegacyRawType;
+    return environment.coreTypes.boolNonNullableRawType;
   }
 
   @override
@@ -653,7 +653,7 @@
   @override
   DartType visitStringConcatenation(StringConcatenation node) {
     node.expressions.forEach(visitExpression);
-    return environment.coreTypes.stringLegacyRawType;
+    return environment.coreTypes.stringNonNullableRawType;
   }
 
   @override
@@ -709,7 +709,7 @@
 
   @override
   DartType visitStringLiteral(StringLiteral node) {
-    return environment.coreTypes.stringLegacyRawType;
+    return environment.coreTypes.stringNonNullableRawType;
   }
 
   @override
@@ -763,7 +763,7 @@
 
   @override
   DartType visitSymbolLiteral(SymbolLiteral node) {
-    return environment.coreTypes.symbolLegacyRawType;
+    return environment.coreTypes.symbolNonNullableRawType;
   }
 
   @override
@@ -779,7 +779,7 @@
 
   @override
   DartType visitTypeLiteral(TypeLiteral node) {
-    return environment.coreTypes.typeLegacyRawType;
+    return environment.coreTypes.typeNonNullableRawType;
   }
 
   @override
@@ -829,7 +829,7 @@
 
   @override
   DartType visitCheckLibraryIsLoaded(CheckLibraryIsLoaded node) {
-    return environment.coreTypes.objectLegacyRawType;
+    return environment.coreTypes.objectNullableRawType;
   }
 
   @override
@@ -865,7 +865,7 @@
   void visitDoStatement(DoStatement node) {
     visitStatement(node.body);
     node.condition = checkAndDowncastExpression(
-        node.condition, environment.coreTypes.boolLegacyRawType);
+        node.condition, environment.coreTypes.boolNonNullableRawType);
   }
 
   @override
@@ -936,7 +936,7 @@
     node.variables.forEach(visitVariableDeclaration);
     if (node.condition != null) {
       node.condition = checkAndDowncastExpression(
-          node.condition!, environment.coreTypes.boolLegacyRawType);
+          node.condition!, environment.coreTypes.boolNonNullableRawType);
     }
     node.updates.forEach(visitExpression);
     visitStatement(node.body);
@@ -950,7 +950,7 @@
   @override
   void visitIfStatement(IfStatement node) {
     node.condition = checkAndDowncastExpression(
-        node.condition, environment.coreTypes.boolLegacyRawType);
+        node.condition, environment.coreTypes.boolNonNullableRawType);
     visitStatement(node.then);
     if (node.otherwise != null) {
       visitStatement(node.otherwise!);
@@ -1012,7 +1012,7 @@
   @override
   void visitWhileStatement(WhileStatement node) {
     node.condition = checkAndDowncastExpression(
-        node.condition, environment.coreTypes.boolLegacyRawType);
+        node.condition, environment.coreTypes.boolNonNullableRawType);
     visitStatement(node.body);
   }
 
@@ -1113,13 +1113,13 @@
     visitExpression(node.left);
     visitExpression(node.right);
     // TODO(johnniwinther): Return Never as type for equals call on Never.
-    return environment.coreTypes.boolLegacyRawType;
+    return environment.coreTypes.boolNonNullableRawType;
   }
 
   @override
   DartType visitEqualsNull(EqualsNull node) {
     visitExpression(node.expression);
-    return environment.coreTypes.boolLegacyRawType;
+    return environment.coreTypes.boolNonNullableRawType;
   }
 
   @override
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart
index bf10220..d7fb52b 100644
--- a/pkg/kernel/lib/verifier.dart
+++ b/pkg/kernel/lib/verifier.dart
@@ -814,11 +814,42 @@
     bool savedInCatchBlock = inCatchBlock;
     AsyncMarker savedAsyncMarker = currentAsyncMarker;
     currentAsyncMarker = node.asyncMarker;
-    if (!isOutline &&
-        node.asyncMarker == AsyncMarker.Async &&
-        node.emittedValueType == null) {
-      problem(node,
-          "No future value type set for async function in opt-in library.");
+    if (!isOutline) {
+      if (node.asyncMarker == AsyncMarker.Async &&
+          node.emittedValueType == null) {
+        problem(node,
+            "No future value type set for async function in opt-in library.");
+      }
+
+      TreeNode? parent = node.parent;
+      if (parent is! Procedure ||
+          !parent.isAbstract &&
+              !parent.isSynthetic &&
+              !parent.isSyntheticForwarder) {
+        for (int positionalIndex = 0;
+            positionalIndex < node.positionalParameters.length;
+            positionalIndex++) {
+          if (positionalIndex >= node.requiredParameterCount) {
+            VariableDeclaration positionalParameter =
+                node.positionalParameters[positionalIndex];
+            if (positionalParameter.initializer == null) {
+              problem(
+                  positionalParameter,
+                  "An optional positional parameter is expected to have a "
+                  "default value initializer, defined or synthesized.");
+            }
+          }
+        }
+        for (VariableDeclaration namedParameter in node.namedParameters) {
+          if (!namedParameter.isRequired &&
+              namedParameter.initializer == null) {
+            problem(
+                namedParameter,
+                "An optional named parameter is expected to have a default "
+                "value initializer, defined or synthesized.");
+          }
+        }
+      }
     }
     inCatchBlock = false;
     visitWithLocalScope(node);
diff --git a/pkg/vm/lib/modular/target/vm.dart b/pkg/vm/lib/modular/target/vm.dart
index 4198204..80c39d8 100644
--- a/pkg/vm/lib/modular/target/vm.dart
+++ b/pkg/vm/lib/modular/target/vm.dart
@@ -231,7 +231,7 @@
           new IntLiteral(type)..fileOffset = offset,
           _fixedLengthList(
               coreTypes,
-              coreTypes.typeLegacyRawType,
+              coreTypes.typeNonNullableRawType,
               arguments.types
                   .map<Expression>((t) => new TypeLiteral(t))
                   .toList(),
@@ -247,11 +247,11 @@
                       new SymbolLiteral(arg.name)..fileOffset = arg.fileOffset,
                       arg.value)
                     ..fileOffset = arg.fileOffset;
-                })), keyType: coreTypes.symbolLegacyRawType)
+                })), keyType: coreTypes.symbolNonNullableRawType)
                   ..isConst = (arguments.named.isEmpty)
                   ..fileOffset = arguments.fileOffset
               ], types: [
-                coreTypes.symbolLegacyRawType,
+                coreTypes.symbolNonNullableRawType,
                 new DynamicType()
               ]))
             ..fileOffset = offset
diff --git a/pkg/vm/lib/modular/transformations/ffi/common.dart b/pkg/vm/lib/modular/transformations/ffi/common.dart
index 2b512b2..3944b7b 100644
--- a/pkg/vm/lib/modular/transformations/ffi/common.dart
+++ b/pkg/vm/lib/modular/transformations/ffi/common.dart
@@ -735,7 +735,7 @@
       if (nativeClass == abiSpecificIntegerClass) {
         return null;
       }
-      return InterfaceType(intClass, Nullability.legacy);
+      return coreTypes.intNonNullableRawType;
     }
     if (hierarchy.isSubclassOf(nativeClass, compoundClass)) {
       if (nativeClass == structClass || nativeClass == unionClass) {
@@ -750,13 +750,13 @@
       return nativeType;
     }
     if (nativeIntTypesFixedSize.contains(nativeType_)) {
-      return InterfaceType(intClass, Nullability.legacy);
+      return coreTypes.intNonNullableRawType;
     }
     if (nativeType_ == NativeType.kFloat || nativeType_ == NativeType.kDouble) {
-      return InterfaceType(doubleClass, Nullability.legacy);
+      return coreTypes.doubleNonNullableRawType;
     }
     if (nativeType_ == NativeType.kBool) {
-      return InterfaceType(boolClass, Nullability.legacy);
+      return coreTypes.boolNonNullableRawType;
     }
     if (nativeType_ == NativeType.kVoid) {
       if (!allowVoid) {
@@ -765,7 +765,7 @@
       return VoidType();
     }
     if (nativeType_ == NativeType.kHandle && allowHandle) {
-      return InterfaceType(objectClass, Nullability.legacy);
+      return coreTypes.objectNonNullableRawType;
     }
     if (nativeType_ != NativeType.kNativeFunction ||
         native.typeArguments[0] is! FunctionType) {
@@ -798,7 +798,7 @@
       );
     }
     if (argumentTypes.contains(dummyDartType)) return null;
-    return FunctionType(argumentTypes, returnType, Nullability.legacy);
+    return FunctionType(argumentTypes, returnType, Nullability.nonNullable);
   }
 
   /// Finds a native type for the given [dartType] if there is only one possible
@@ -869,30 +869,36 @@
     return classNativeTypes[c];
   }
 
-  InterfaceType _listOfIntType() => InterfaceType(
-      listClass, Nullability.legacy, [coreTypes.intLegacyRawType]);
+  InterfaceType _listOfIntType(Nullability elementNullability) => InterfaceType(
+      listClass,
+      Nullability.nonNullable,
+      [coreTypes.intRawType(elementNullability)]);
 
-  ConstantExpression intListConstantExpression(List<int?> values) =>
+  ConstantExpression intListConstantExpression(
+          List<int?> values, Nullability elementNullability) =>
       ConstantExpression(
-          ListConstant(coreTypes.intLegacyRawType, [
+          ListConstant(coreTypes.intRawType(elementNullability), [
             for (var v in values)
               if (v != null) IntConstant(v) else NullConstant()
           ]),
-          _listOfIntType());
+          _listOfIntType(elementNullability));
 
   /// Expression that queries VM internals at runtime to figure out on which ABI
   /// we are.
   Expression runtimeBranchOnLayout(Map<Abi, int?> values) {
+    final elementNullability =
+        values.isPartial ? Nullability.nullable : Nullability.nonNullable;
     final result = InstanceInvocation(
         InstanceAccessKind.Instance,
         intListConstantExpression([
           for (final abi in Abi.values) values[abi],
-        ]),
+        ], elementNullability),
         listElementAt.name,
         Arguments([StaticInvocation(abiMethod, Arguments([]))]),
         interfaceTarget: listElementAt,
-        functionType: Substitution.fromInterfaceType(_listOfIntType())
-            .substituteType(listElementAt.getterType) as FunctionType);
+        functionType:
+            Substitution.fromInterfaceType(_listOfIntType(elementNullability))
+                .substituteType(listElementAt.getterType) as FunctionType);
     if (values.isPartial) {
       return checkAbiSpecificIntegerMapping(result);
     }
@@ -949,7 +955,7 @@
     }
     return env.isSubtypeOf(
         type,
-        InterfaceType(arrayClass, Nullability.legacy, [nativeTypeType]),
+        InterfaceType(arrayClass, Nullability.nonNullable, [nativeTypeType]),
         SubtypeCheckMode.ignoringNullabilities);
   }
 
@@ -1087,7 +1093,7 @@
     }
     return env.isSubtypeOf(
         type,
-        InterfaceType(abiSpecificIntegerClass, Nullability.legacy),
+        InterfaceType(abiSpecificIntegerClass, Nullability.nonNullable),
         SubtypeCheckMode.ignoringNullabilities);
   }
 
@@ -1107,7 +1113,7 @@
     }
     return env.isSubtypeOf(
         type,
-        InterfaceType(compoundClass, Nullability.legacy),
+        InterfaceType(compoundClass, Nullability.nonNullable),
         SubtypeCheckMode.ignoringNullabilities);
   }
 
diff --git a/pkg/vm/lib/modular/transformations/ffi/definitions.dart b/pkg/vm/lib/modular/transformations/ffi/definitions.dart
index 8d7fc52..0e290c2 100644
--- a/pkg/vm/lib/modular/transformations/ffi/definitions.dart
+++ b/pkg/vm/lib/modular/transformations/ffi/definitions.dart
@@ -501,7 +501,7 @@
         success = false;
       } else {
         final DartType nativeType =
-            InterfaceType(nativeTypeAnnos.first, Nullability.legacy);
+            InterfaceType(nativeTypeAnnos.first, Nullability.nonNullable);
         final DartType? shouldBeDartType = convertNativeTypeToDartType(
           nativeType,
           allowStructAndUnion: true,
@@ -1105,7 +1105,7 @@
         ProcedureKind.Getter,
         FunctionNode(
           ReturnStatement(runtimeBranchOnLayout(sizes)),
-          returnType: InterfaceType(intClass, Nullability.legacy),
+          returnType: coreTypes.intNonNullableRawType,
         ),
         fileUri: compound.fileUri,
         reference: getterReference,
diff --git a/pkg/vm/lib/modular/transformations/ffi/native.dart b/pkg/vm/lib/modular/transformations/ffi/native.dart
index 1a4eb3f..0fd7120 100644
--- a/pkg/vm/lib/modular/transformations/ffi/native.dart
+++ b/pkg/vm/lib/modular/transformations/ffi/native.dart
@@ -946,7 +946,7 @@
         _wrapFunctionType(dartFunctionType, ffiFunctionType);
 
     final nativeType = InterfaceType(
-        nativeFunctionClass, Nullability.legacy, [ffiFunctionType]);
+        nativeFunctionClass, Nullability.nonNullable, [ffiFunctionType]);
 
     try {
       ensureNativeTypeValid(nativeType, node);
diff --git a/pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart b/pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart
index b952791..4ecc000 100644
--- a/pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart
+++ b/pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart
@@ -829,7 +829,8 @@
           typedDataBase,
           offsetInBytes,
           ConstantExpression(IntConstant(length)),
-          transformer.intListConstantExpression(nestedDimensions)
+          transformer.intListConstantExpression(
+              nestedDimensions, Nullability.nonNullable)
         ],
         types: [typeArgument],
       ),
diff --git a/pkg/vm/lib/modular/transformations/for_in_lowering.dart b/pkg/vm/lib/modular/transformations/for_in_lowering.dart
index edfc21e..c50f9b0 100644
--- a/pkg/vm/lib/modular/transformations/for_in_lowering.dart
+++ b/pkg/vm/lib/modular/transformations/for_in_lowering.dart
@@ -180,12 +180,8 @@
           InvalidExpression('Invalid iterable type in for-in'));
     }
 
-    // The NNBD sdk declares that Iterable.get:iterator returns a non-nullable
-    // `Iterator<E>`.
-    assert(const [
-      Nullability.nonNullable,
-      Nullability.legacy
-    ].contains(coreTypes.iterableGetIterator.function.returnType.nullability));
+    assert(coreTypes.iterableGetIterator.function.returnType.nullability ==
+        Nullability.nonNullable);
 
     final DartType elementType = stmt.getElementType(staticTypeContext);
     final iteratorType = InterfaceType(
diff --git a/pkg/vm/lib/transformations/type_flow/analysis.dart b/pkg/vm/lib/transformations/type_flow/analysis.dart
index 93c4b10..4012ac4 100644
--- a/pkg/vm/lib/transformations/type_flow/analysis.dart
+++ b/pkg/vm/lib/transformations/type_flow/analysis.dart
@@ -169,7 +169,7 @@
     final nsmArgs = new Args<Type>([
       receiver,
       typeFlowAnalysis.hierarchyCache.fromStaticType(
-          typeFlowAnalysis.coreTypes.invocationLegacyRawType, false)
+          typeFlowAnalysis.coreTypes.invocationNonNullableRawType, false)
     ]);
 
     final nsmInvocation =
diff --git a/pkg/vm/lib/transformations/type_flow/summary.dart b/pkg/vm/lib/transformations/type_flow/summary.dart
index 5a4019e..17e3cf8 100644
--- a/pkg/vm/lib/transformations/type_flow/summary.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary.dart
@@ -449,8 +449,7 @@
     if (!receiverMayBeInt) {
       final receiverIntIntersect =
           receiver.intersection(typeHierarchy.intType, typeHierarchy);
-      if (receiverIntIntersect != emptyType &&
-          receiverIntIntersect != nullableEmptyType) {
+      if (receiverIntIntersect != emptyType) {
         _flags |= kReceiverMayBeInt;
       }
     }
diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
index d70086c..334dff3 100644
--- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
@@ -669,8 +669,10 @@
         _summary = new Summary(summaryName,
             parameterCount: numArgs, positionalParameterCount: numArgs);
         // TODO(alexmarkov): subclass cone
-        _receiver = _declareParameter("this",
-            _environment.coreTypes.legacyRawType(member.enclosingClass!), null,
+        _receiver = _declareParameter(
+            "this",
+            _environment.coreTypes.nonNullableRawType(member.enclosingClass!),
+            null,
             isReceiver: true);
         if (_variablesInfo.isReceiverCaptured) {
           final capturedReceiver =
@@ -722,8 +724,10 @@
         _declareParameter('#closure', const DynamicType(), null);
       } else if (hasReceiver) {
         // TODO(alexmarkov): subclass cone
-        _receiver = _declareParameter('this',
-            _environment.coreTypes.legacyRawType(member.enclosingClass!), null,
+        _receiver = _declareParameter(
+            'this',
+            _environment.coreTypes.nonNullableRawType(member.enclosingClass!),
+            null,
             isReceiver: true);
       }
 
@@ -1592,10 +1596,10 @@
       final rhs = node.right;
       if ((rhs is IntLiteral &&
               _isSubtype(lhs.variable.type,
-                  _environment.coreTypes.intLegacyRawType)) ||
+                  _environment.coreTypes.intNullableRawType)) ||
           (rhs is StringLiteral &&
               _isSubtype(lhs.variable.type,
-                  _environment.coreTypes.stringLegacyRawType)) ||
+                  _environment.coreTypes.stringNullableRawType)) ||
           (rhs is ConstantExpression &&
               !_hasOverriddenEquals(lhs.variable.type))) {
         // 'x == c', where x is a variable and c is a constant.
diff --git a/pkg/vm/lib/transformations/type_flow/types.dart b/pkg/vm/lib/transformations/type_flow/types.dart
index 306a579..0b986e1 100644
--- a/pkg/vm/lib/transformations/type_flow/types.dart
+++ b/pkg/vm/lib/transformations/type_flow/types.dart
@@ -297,7 +297,8 @@
   /// Returns true if [cls] has allocated subtypes.
   bool hasAllocatedSubtypes(TFClass cls);
 
-  late final Type intType = fromStaticType(coreTypes.intLegacyRawType, true);
+  late final Type intType =
+      fromStaticType(coreTypes.intNonNullableRawType, false);
 }
 
 /// Base class for type expressions.
diff --git a/pkg/vm/test/transformations/type_flow/types_test.dart b/pkg/vm/test/transformations/type_flow/types_test.dart
index 9be7acd..55a1638 100644
--- a/pkg/vm/test/transformations/type_flow/types_test.dart
+++ b/pkg/vm/test/transformations/type_flow/types_test.dart
@@ -72,13 +72,13 @@
     final tfc2 = tb.getTFClass(c2);
     final tfFunction = tb.getTFClass(coreTypes.functionClass);
 
-    final InterfaceType t1 = new InterfaceType(c1, Nullability.legacy);
-    final InterfaceType t2Raw = new InterfaceType(c2, Nullability.legacy);
+    final InterfaceType t1 = new InterfaceType(c1, Nullability.nullable);
+    final InterfaceType t2Raw = new InterfaceType(c2, Nullability.nullable);
     final InterfaceType t2Generic =
-        new InterfaceType(c2, Nullability.legacy, [t1]);
+        new InterfaceType(c2, Nullability.nullable, [t1]);
     final DartType t3 = const NullType();
     final FunctionType f1 =
-        new FunctionType([t1], const VoidType(), Nullability.legacy);
+        new FunctionType([t1], const VoidType(), Nullability.nullable);
 
     expect(tb.fromStaticType(const NeverType.nonNullable(), false),
         equals(emptyType));
@@ -305,9 +305,9 @@
     final tfc2 = TFClass(2, c2, {}, null);
     final tfc3 = TFClass(3, c3, {}, null);
 
-    final t1a = InterfaceType(c1, Nullability.legacy);
-    final t1b = InterfaceType(c1, Nullability.legacy);
-    final t2 = InterfaceType(c2, Nullability.legacy);
+    final t1a = InterfaceType(c1, Nullability.nonNullable);
+    final t1b = InterfaceType(c1, Nullability.nonNullable);
+    final t2 = InterfaceType(c2, Nullability.nonNullable);
 
     void eq(dynamic a, dynamic b) {
       expect(a == b, isTrue, reason: "Test case: $a == $b");
diff --git a/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect
index bd77ca3..875cc63 100644
--- a/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect
@@ -11,8 +11,8 @@
 
   [@vm.unboxing-info.metadata=()->i]
   @#C10
-  static get #sizeOf() → core::int*
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C18
 final class WCharStruct extends ffi::Struct {
@@ -33,12 +33,12 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C10
   static get a0#offsetOf() → core::int
-    return #C20.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C20.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C10
-  static get #sizeOf() → core::int*
-    return #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C27
 final class WCharArrayStruct extends ffi::Struct {
@@ -53,12 +53,12 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C10
   static get a0#offsetOf() → core::int
-    return #C20.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C20.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C10
-  static get #sizeOf() → core::int*
-    return #C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 class _DummyAllocator extends core::Object implements ffi::Allocator /*hasConstConstructor*/  {
 
@@ -82,7 +82,7 @@
   core::print(size);
 }
 static method testStoreLoad() → void {
-  final ffi::Pointer<self::WChar> p = let final core::int* #t1 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C32.{ffi::Allocator::allocate}<self::WChar>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WChar>};
+  final ffi::Pointer<self::WChar> p = let final core::int #t1 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WChar::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C32.{ffi::Allocator::allocate}<self::WChar>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WChar>};
   ffi::_storeAbiSpecificInt<self::WChar>(p, #C19, 10);
   core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt<self::WChar>(p, #C19));
   [@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C32.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
@@ -96,7 +96,7 @@
   [@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C32.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
 }
 static method testStruct() → void {
-  final ffi::Pointer<self::WCharStruct> p = let final core::int* #t3 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WCharStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C32.{ffi::Allocator::allocate}<self::WCharStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharStruct>};
+  final ffi::Pointer<self::WCharStruct> p = let final core::int #t3 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WCharStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C32.{ffi::Allocator::allocate}<self::WCharStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharStruct>};
   [@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0} = 1;
   core::print([@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=int] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0}{core::int});
   [@vm.direct-call.metadata=#lib::WCharStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::WCharStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharStruct>>(p)).{self::WCharStruct::a0} = 2;
@@ -104,7 +104,7 @@
   [@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C32.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
 }
 static method testInlineArray() → void {
-  final ffi::Pointer<self::WCharArrayStruct> p = let final core::int* #t4 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WCharArrayStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C32.{ffi::Allocator::allocate}<self::WCharArrayStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharArrayStruct>};
+  final ffi::Pointer<self::WCharArrayStruct> p = let final core::int #t4 = [@vm.inferred-type.metadata=dart.core::_Smi] self::WCharArrayStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C32.{ffi::Allocator::allocate}<self::WCharArrayStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::WCharArrayStruct>};
   final ffi::Array<self::WChar> array = [@vm.direct-call.metadata=#lib::WCharArrayStruct.a0] [@vm.inferred-type.metadata=dart.ffi::Array<#lib::WChar>] new self::WCharArrayStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::WCharArrayStruct>>(p)).{self::WCharArrayStruct::a0}{ffi::Array<self::WChar>};
   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}) {
     block {
@@ -135,24 +135,24 @@
   #C10 = core::pragma {name:#C8, options:#C9}
   #C11 = 4
   #C12 = 2
-  #C13 = <core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C12, #C12, #C12]
+  #C13 = <core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C12, #C12, #C12]
   #C14 = "vm:ffi:struct-fields"
   #C15 = TypeLiteralConstant(self::WChar)
   #C16 = <core::Type>[#C15, #C15]
   #C17 = ffi::_FfiStructLayout {fieldTypes:#C16, packing:#C9}
   #C18 = core::pragma {name:#C14, options:#C17}
   #C19 = 0
-  #C20 = <core::int*>[#C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
+  #C20 = <core::int>[#C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19, #C19]
   #C21 = 8
-  #C22 = <core::int*>[#C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C11, #C11, #C11]
+  #C22 = <core::int>[#C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C21, #C11, #C11, #C11]
   #C23 = 100
   #C24 = ffi::_FfiInlineArray {elementType:#C15, length:#C23}
   #C25 = <core::Type>[#C24]
   #C26 = ffi::_FfiStructLayout {fieldTypes:#C25, packing:#C9}
   #C27 = core::pragma {name:#C14, options:#C26}
-  #C28 = <core::int*>[]
+  #C28 = <core::int>[]
   #C29 = 400
   #C30 = 200
-  #C31 = <core::int*>[#C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C30, #C30, #C30]
+  #C31 = <core::int>[#C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C30, #C30, #C30]
   #C32 = self::_DummyAllocator {}
 }
diff --git a/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.expect b/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.expect
index 75a52d2..9b56c76 100644
--- a/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.expect
@@ -13,8 +13,8 @@
     : super ffi::AbiSpecificInteger::•()
     ;
   @#C67
-  static get #sizeOf() → core::int*
-    return #C68.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C68.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C73
 final class WCharStruct extends ffi::Struct {
@@ -41,13 +41,13 @@
     return ffi::_storeAbiSpecificInt<self::WChar>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::WCharStruct::a1#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C67
   static get a0#offsetOf() → core::int
-    return #C75.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C75.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C67
   static get a1#offsetOf() → core::int
-    return #C68.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C68.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C67
-  static get #sizeOf() → core::int*
-    return #C77.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C77.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C82
 final class WCharArrayStruct extends ffi::Struct {
@@ -65,13 +65,13 @@
     return new ffi::Array::_<self::WChar>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::WCharArrayStruct::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C78, #C84);
   @#C83
   set a0(synthesized ffi::Array<self::WChar> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::WCharArrayStruct::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C87.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::WCharArrayStruct::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C87.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C67
   static get a0#offsetOf() → core::int
-    return #C75.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C75.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C67
-  static get #sizeOf() → core::int*
-    return #C87.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C87.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 class _DummyAllocator extends core::Object implements ffi::Allocator /*hasConstConstructor*/  {
   const constructor •() → self::_DummyAllocator
@@ -205,26 +205,26 @@
   #C65 = "vm:prefer-inline"
   #C66 = null
   #C67 = core::pragma {name:#C65, options:#C66}
-  #C68 = <core::int*>[#C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C12, #C12, #C12]
+  #C68 = <core::int>[#C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C41, #C12, #C12, #C12]
   #C69 = "vm:ffi:struct-fields"
   #C70 = TypeLiteralConstant(self::WChar)
   #C71 = <core::Type>[#C70, #C70]
   #C72 = ffi::_FfiStructLayout {fieldTypes:#C71, packing:#C66}
   #C73 = core::pragma {name:#C69, options:#C72}
   #C74 = self::WChar {}
-  #C75 = <core::int*>[#C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1]
+  #C75 = <core::int>[#C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1, #C1]
   #C76 = 8
-  #C77 = <core::int*>[#C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C41, #C41, #C41]
+  #C77 = <core::int>[#C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C76, #C41, #C41, #C41]
   #C78 = 100
   #C79 = ffi::_FfiInlineArray {elementType:#C70, length:#C78}
   #C80 = <core::Type>[#C79]
   #C81 = ffi::_FfiStructLayout {fieldTypes:#C80, packing:#C66}
   #C82 = core::pragma {name:#C69, options:#C81}
   #C83 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C78, dimension2:#C66, dimension3:#C66, dimension4:#C66, dimension5:#C66, dimensions:#C66}
-  #C84 = <core::int*>[]
+  #C84 = <core::int>[]
   #C85 = 400
   #C86 = 200
-  #C87 = <core::int*>[#C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C86, #C86, #C86]
+  #C87 = <core::int>[#C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C85, #C86, #C86, #C86]
   #C88 = core::_Override {}
   #C89 = self::_DummyAllocator {}
 }
diff --git a/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect
index 7cbfc84..b33da5c 100644
--- a/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect
@@ -11,8 +11,8 @@
 
   [@vm.unboxing-info.metadata=()->i]
   @#C8
-  static get #sizeOf() → core::int*
-    return [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  static get #sizeOf() → core::int
+    return [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
 }
 @#C15
 final class IncompleteStruct extends ffi::Struct {
@@ -33,12 +33,12 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get a0#offsetOf() → core::int
-    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C8
-  static get #sizeOf() → core::int*
-    return [@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  static get #sizeOf() → core::int
+    return [@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
 }
 @#C24
 final class IncompleteArrayStruct extends ffi::Struct {
@@ -53,12 +53,12 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get a0#offsetOf() → core::int
-    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C8
-  static get #sizeOf() → core::int*
-    return [@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C27.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  static get #sizeOf() → core::int
+    return [@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] ffi::_checkAbiSpecificIntegerMapping<core::int>(#C27.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
 }
 class _DummyAllocator extends core::Object implements ffi::Allocator /*hasConstConstructor*/  {
 
@@ -82,7 +82,7 @@
   core::print(size);
 }
 static method testStoreLoad() → void {
-  final ffi::Pointer<self::Incomplete> p = let final core::int* #t1 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] self::Incomplete::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::Incomplete>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::Incomplete>};
+  final ffi::Pointer<self::Incomplete> p = let final core::int #t1 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] self::Incomplete::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::Incomplete>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::Incomplete>};
   ffi::_storeAbiSpecificInt<self::Incomplete>(p, #C16, 10);
   core::print([@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt<self::Incomplete>(p, #C16));
   [@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
@@ -96,7 +96,7 @@
   [@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
 }
 static method testStruct() → void {
-  final ffi::Pointer<self::IncompleteStruct> p = let final core::int* #t3 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] self::IncompleteStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteStruct>};
+  final ffi::Pointer<self::IncompleteStruct> p = let final core::int #t3 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 8)] self::IncompleteStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteStruct>};
   [@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0} = 1;
   core::print([@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=int] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0}{core::int});
   [@vm.direct-call.metadata=#lib::IncompleteStruct.a0] [@vm.inferred-type.metadata=!? (skip check)] new self::IncompleteStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteStruct>>(p)).{self::IncompleteStruct::a0} = 2;
@@ -104,7 +104,7 @@
   [@vm.direct-call.metadata=#lib::_DummyAllocator.free] [@vm.inferred-type.metadata=!? (skip check)] #C28.{self::_DummyAllocator::free}(){(ffi::Pointer<ffi::NativeType>) → void};
 }
 static method testInlineArray() → void {
-  final ffi::Pointer<self::IncompleteArrayStruct> p = let final core::int* #t4 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] self::IncompleteArrayStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteArrayStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteArrayStruct>};
+  final ffi::Pointer<self::IncompleteArrayStruct> p = let final core::int #t4 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 400)] self::IncompleteArrayStruct::#sizeOf in [@vm.direct-call.metadata=#lib::_DummyAllocator.allocate] [@vm.inferred-type.metadata=dart.ffi::Pointer (skip check)] #C28.{ffi::Allocator::allocate}<self::IncompleteArrayStruct>(){(core::int, {alignment: core::int?}) → ffi::Pointer<self::IncompleteArrayStruct>};
   final ffi::Array<self::Incomplete> array = [@vm.direct-call.metadata=#lib::IncompleteArrayStruct.a0] [@vm.inferred-type.metadata=dart.ffi::Array<#lib::Incomplete>] new self::IncompleteArrayStruct::#fromTypedDataBase(_in::unsafeCast<ffi::Pointer<self::IncompleteArrayStruct>>(p)).{self::IncompleteArrayStruct::a0}{ffi::Array<self::Incomplete>};
   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}) {
     block {
@@ -132,23 +132,23 @@
   #C7 = "vm:prefer-inline"
   #C8 = core::pragma {name:#C7, options:#C2}
   #C9 = 4
-  #C10 = <core::int*>[#C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C9, #C9, #C9, #C9, #C2, #C2, #C2, #C2, #C2, #C2, #C2]
+  #C10 = <core::int?>[#C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C9, #C9, #C9, #C9, #C2, #C2, #C2, #C2, #C2, #C2, #C2]
   #C11 = "vm:ffi:struct-fields"
   #C12 = TypeLiteralConstant(self::Incomplete)
   #C13 = <core::Type>[#C12, #C12]
   #C14 = ffi::_FfiStructLayout {fieldTypes:#C13, packing:#C2}
   #C15 = core::pragma {name:#C11, options:#C14}
   #C16 = 0
-  #C17 = <core::int*>[#C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
+  #C17 = <core::int>[#C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
   #C18 = 8
-  #C19 = <core::int*>[#C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C18, #C18, #C18, #C18, #C2, #C2, #C2, #C2, #C2, #C2, #C2]
+  #C19 = <core::int?>[#C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C18, #C18, #C18, #C18, #C2, #C2, #C2, #C2, #C2, #C2, #C2]
   #C20 = 100
   #C21 = ffi::_FfiInlineArray {elementType:#C12, length:#C20}
   #C22 = <core::Type>[#C21]
   #C23 = ffi::_FfiStructLayout {fieldTypes:#C22, packing:#C2}
   #C24 = core::pragma {name:#C11, options:#C23}
-  #C25 = <core::int*>[]
+  #C25 = <core::int>[]
   #C26 = 400
-  #C27 = <core::int*>[#C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C26, #C26, #C26, #C26, #C2, #C2, #C2, #C2, #C2, #C2, #C2]
+  #C27 = <core::int?>[#C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C2, #C26, #C26, #C26, #C26, #C2, #C2, #C2, #C2, #C2, #C2, #C2]
   #C28 = self::_DummyAllocator {}
 }
diff --git a/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.expect b/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.expect
index 057c596..f08aed4 100644
--- a/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.expect
@@ -13,8 +13,8 @@
     : super ffi::AbiSpecificInteger::•()
     ;
   @#C29
-  static get #sizeOf() → core::int*
-    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  static get #sizeOf() → core::int
+    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
 }
 @#C36
 final class IncompleteStruct extends ffi::Struct {
@@ -41,13 +41,13 @@
     return ffi::_storeAbiSpecificInt<self::Incomplete>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::IncompleteStruct::a1#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C29
   static get a0#offsetOf() → core::int
-    return #C38.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C38.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C29
   static get a1#offsetOf() → core::int
-    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
   @#C29
-  static get #sizeOf() → core::int*
-    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C40.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  static get #sizeOf() → core::int
+    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C40.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
 }
 @#C45
 final class IncompleteArrayStruct extends ffi::Struct {
@@ -65,13 +65,13 @@
     return new ffi::Array::_<self::Incomplete>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::IncompleteArrayStruct::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C41, #C47);
   @#C46
   set a0(synthesized ffi::Array<self::Incomplete> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::IncompleteArrayStruct::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, ffi::_checkAbiSpecificIntegerMapping<core::int>(#C49.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}));
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::IncompleteArrayStruct::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, ffi::_checkAbiSpecificIntegerMapping<core::int>(#C49.{core::List::[]}(ffi::_abi()){(core::int) → core::int?}));
   @#C29
   static get a0#offsetOf() → core::int
-    return #C38.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C38.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C29
-  static get #sizeOf() → core::int*
-    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C49.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  static get #sizeOf() → core::int
+    return ffi::_checkAbiSpecificIntegerMapping<core::int>(#C49.{core::List::[]}(ffi::_abi()){(core::int) → core::int?});
 }
 class _DummyAllocator extends core::Object implements ffi::Allocator /*hasConstConstructor*/  {
   const constructor •() → self::_DummyAllocator
@@ -168,25 +168,25 @@
   #C28 = "vm:prefer-inline"
   #C29 = core::pragma {name:#C28, options:#C23}
   #C30 = 4
-  #C31 = <core::int*>[#C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C30, #C30, #C30, #C30, #C23, #C23, #C23, #C23, #C23, #C23, #C23]
+  #C31 = <core::int?>[#C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C30, #C30, #C30, #C30, #C23, #C23, #C23, #C23, #C23, #C23, #C23]
   #C32 = "vm:ffi:struct-fields"
   #C33 = TypeLiteralConstant(self::Incomplete)
   #C34 = <core::Type>[#C33, #C33]
   #C35 = ffi::_FfiStructLayout {fieldTypes:#C34, packing:#C23}
   #C36 = core::pragma {name:#C32, options:#C35}
   #C37 = self::Incomplete {}
-  #C38 = <core::int*>[#C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4]
+  #C38 = <core::int>[#C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4, #C4]
   #C39 = 8
-  #C40 = <core::int*>[#C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C39, #C39, #C39, #C39, #C23, #C23, #C23, #C23, #C23, #C23, #C23]
+  #C40 = <core::int?>[#C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C39, #C39, #C39, #C39, #C23, #C23, #C23, #C23, #C23, #C23, #C23]
   #C41 = 100
   #C42 = ffi::_FfiInlineArray {elementType:#C33, length:#C41}
   #C43 = <core::Type>[#C42]
   #C44 = ffi::_FfiStructLayout {fieldTypes:#C43, packing:#C23}
   #C45 = core::pragma {name:#C32, options:#C44}
   #C46 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C41, dimension2:#C23, dimension3:#C23, dimension4:#C23, dimension5:#C23, dimensions:#C23}
-  #C47 = <core::int*>[]
+  #C47 = <core::int>[]
   #C48 = 400
-  #C49 = <core::int*>[#C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C48, #C48, #C48, #C48, #C23, #C23, #C23, #C23, #C23, #C23, #C23]
+  #C49 = <core::int?>[#C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C23, #C48, #C48, #C48, #C48, #C23, #C23, #C23, #C23, #C23, #C23, #C23]
   #C50 = core::_Override {}
   #C51 = self::_DummyAllocator {}
 }
diff --git a/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.aot.expect
index 80f1235..cc77a14 100644
--- a/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.aot.expect
@@ -19,12 +19,12 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C11
   static get a#offsetOf() → core::int
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C11
-  static get #sizeOf() → core::int*
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C17
 final class MyUnion extends ffi::Union {
@@ -34,8 +34,8 @@
 
   [@vm.unboxing-info.metadata=()->i]
   @#C11
-  static get #sizeOf() → core::int*
-    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   final self::MyStruct myStruct = new self::MyStruct::#fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] typ::Uint8List::•([@vm.inferred-type.metadata=dart.core::_Smi (value: 10)] self::MyStruct::#sizeOf));
@@ -62,17 +62,17 @@
   #C6 = null
   #C7 = ffi::_FfiStructLayout {fieldTypes:#C5, packing:#C6}
   #C8 = core::pragma {name:#C1, options:#C7}
-  #C9 = <core::int*>[]
+  #C9 = <core::int>[]
   #C10 = "vm:prefer-inline"
   #C11 = core::pragma {name:#C10, options:#C6}
   #C12 = 0
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
-  #C14 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C14 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C15 = <core::Type>[#C2]
   #C16 = ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C6}
   #C17 = core::pragma {name:#C1, options:#C16}
   #C18 = 1
-  #C19 = <core::int*>[#C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18]
+  #C19 = <core::int>[#C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18]
   #C20 = "cfe:ffi:native-marker"
   #C21 = "myNative"
   #C22 = "#lib"
diff --git a/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.expect b/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.expect
index a1af983..afd9621 100644
--- a/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/address_of_struct.dart.expect
@@ -22,13 +22,13 @@
     return new ffi::Array::_<ffi::Int8>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::a#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C3, #C10);
   @#C9
   set a(synthesized ffi::Array<ffi::Int8> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::a#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::a#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C13
   static get a#offsetOf() → core::int
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C13
-  static get #sizeOf() → core::int*
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C18
 final class MyUnion extends ffi::Union {
@@ -49,10 +49,10 @@
     return ffi::_storeInt8(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::a#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C13
   static get a#offsetOf() → core::int
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C13
-  static get #sizeOf() → core::int*
-    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   final self::MyStruct myStruct = new self::MyStruct::#fromTypedDataBase(typ::Uint8List::•(self::MyStruct::#sizeOf), #C14);
@@ -89,18 +89,18 @@
   #C7 = ffi::_FfiStructLayout {fieldTypes:#C5, packing:#C6}
   #C8 = core::pragma {name:#C1, options:#C7}
   #C9 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C3, dimension2:#C6, dimension3:#C6, dimension4:#C6, dimension5:#C6, dimensions:#C6}
-  #C10 = <core::int*>[]
-  #C11 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C10 = <core::int>[]
+  #C11 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C12 = "vm:prefer-inline"
   #C13 = core::pragma {name:#C12, options:#C6}
   #C14 = 0
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = <core::Type>[#C2]
   #C17 = ffi::_FfiStructLayout {fieldTypes:#C16, packing:#C6}
   #C18 = core::pragma {name:#C1, options:#C17}
   #C19 = ffi::Int8 {}
   #C20 = 1
-  #C21 = <core::int*>[#C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
+  #C21 = <core::int>[#C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
   #C22 = "cfe:ffi:native-marker"
   #C23 = "myNative"
   #C24 = "#lib"
diff --git a/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.aot.expect
index 456a432..657bcc9 100644
--- a/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.aot.expect
@@ -23,27 +23,27 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C13
   static get a#offsetOf() → core::int
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C13
   static get b#offsetOf() → core::int
-    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C13
   static get array#offsetOf() → core::int
-    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C19.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C13
   static get array2#offsetOf() → core::int
-    return #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C22.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C13
-  static get #sizeOf() → core::int*
-    return #C25.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C25.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C28
 final class MyUnion extends ffi::Union {
@@ -53,8 +53,8 @@
 
   [@vm.unboxing-info.metadata=()->i]
   @#C13
-  static get #sizeOf() → core::int*
-    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   final self::MyStruct myStruct = new self::MyStruct::#fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] typ::Uint8List::•([@vm.inferred-type.metadata=dart.core::_Smi] self::MyStruct::#sizeOf));
@@ -90,21 +90,21 @@
   #C8 = null
   #C9 = ffi::_FfiStructLayout {fieldTypes:#C7, packing:#C8}
   #C10 = core::pragma {name:#C1, options:#C9}
-  #C11 = <core::int*>[]
+  #C11 = <core::int>[]
   #C12 = "vm:prefer-inline"
   #C13 = core::pragma {name:#C12, options:#C8}
   #C14 = 0
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = 1
-  #C17 = <core::int*>[#C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
+  #C17 = <core::int>[#C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16, #C16]
   #C18 = 2
-  #C19 = <core::int*>[#C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18]
+  #C19 = <core::int>[#C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18, #C18]
   #C20 = 12
   #C21 = 16
-  #C22 = <core::int*>[#C20, #C21, #C20, #C21, #C21, #C21, #C21, #C21, #C20, #C21, #C21, #C20, #C21, #C20, #C21, #C20, #C21, #C21, #C21, #C20, #C20, #C20]
+  #C22 = <core::int>[#C20, #C21, #C20, #C21, #C21, #C21, #C21, #C21, #C20, #C21, #C21, #C20, #C21, #C20, #C21, #C20, #C21, #C21, #C21, #C20, #C20, #C20]
   #C23 = 52
   #C24 = 96
-  #C25 = <core::int*>[#C23, #C24, #C23, #C24, #C24, #C24, #C24, #C24, #C23, #C24, #C24, #C23, #C24, #C23, #C24, #C23, #C24, #C24, #C24, #C23, #C23, #C23]
+  #C25 = <core::int>[#C23, #C24, #C23, #C24, #C24, #C24, #C24, #C24, #C23, #C24, #C24, #C23, #C24, #C23, #C24, #C23, #C24, #C24, #C24, #C23, #C23, #C23]
   #C26 = <core::Type>[#C2, #C2]
   #C27 = ffi::_FfiStructLayout {fieldTypes:#C26, packing:#C8}
   #C28 = core::pragma {name:#C1, options:#C27}
diff --git a/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.expect b/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.expect
index 3362514..b62434c 100644
--- a/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/address_of_struct_element.dart.expect
@@ -34,28 +34,28 @@
     return new ffi::Array::_<ffi::Int8>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::array#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C3, #C13);
   @#C12
   set array(synthesized ffi::Array<ffi::Int8> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::array#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::array#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C12
   get array2() → ffi::Array<ffi::UnsignedLong>
     return new ffi::Array::_<ffi::UnsignedLong>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::array2#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C3, #C13);
   @#C12
   set array2(synthesized ffi::Array<ffi::UnsignedLong> #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::array2#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyStruct::array2#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C19
   static get a#offsetOf() → core::int
-    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C19
   static get b#offsetOf() → core::int
-    return #C23.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C23.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C19
   static get array#offsetOf() → core::int
-    return #C25.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C25.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C19
   static get array2#offsetOf() → core::int
-    return #C28.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C28.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C19
-  static get #sizeOf() → core::int*
-    return #C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C31.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C34
 final class MyUnion extends ffi::Union {
@@ -82,13 +82,13 @@
     return ffi::_storeInt8(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::b#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C19
   static get a#offsetOf() → core::int
-    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C19
   static get b#offsetOf() → core::int
-    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C21.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C19
-  static get #sizeOf() → core::int*
-    return #C23.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C23.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   final self::MyStruct myStruct = new self::MyStruct::#fromTypedDataBase(typ::Uint8List::•(self::MyStruct::#sizeOf), #C20);
@@ -129,25 +129,25 @@
   #C10 = core::pragma {name:#C1, options:#C9}
   #C11 = ffi::Int8 {}
   #C12 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C3, dimension2:#C8, dimension3:#C8, dimension4:#C8, dimension5:#C8, dimensions:#C8}
-  #C13 = <core::int*>[]
-  #C14 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
+  #C13 = <core::int>[]
+  #C14 = <core::int>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3]
   #C15 = 40
   #C16 = 80
-  #C17 = <core::int*>[#C15, #C16, #C15, #C16, #C16, #C16, #C16, #C16, #C15, #C16, #C16, #C15, #C16, #C15, #C16, #C15, #C16, #C16, #C16, #C15, #C15, #C15]
+  #C17 = <core::int>[#C15, #C16, #C15, #C16, #C16, #C16, #C16, #C16, #C15, #C16, #C16, #C15, #C16, #C15, #C16, #C15, #C16, #C16, #C16, #C15, #C15, #C15]
   #C18 = "vm:prefer-inline"
   #C19 = core::pragma {name:#C18, options:#C8}
   #C20 = 0
-  #C21 = <core::int*>[#C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
+  #C21 = <core::int>[#C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20, #C20]
   #C22 = 1
-  #C23 = <core::int*>[#C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22]
+  #C23 = <core::int>[#C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22, #C22]
   #C24 = 2
-  #C25 = <core::int*>[#C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24]
+  #C25 = <core::int>[#C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24, #C24]
   #C26 = 12
   #C27 = 16
-  #C28 = <core::int*>[#C26, #C27, #C26, #C27, #C27, #C27, #C27, #C27, #C26, #C27, #C27, #C26, #C27, #C26, #C27, #C26, #C27, #C27, #C27, #C26, #C26, #C26]
+  #C28 = <core::int>[#C26, #C27, #C26, #C27, #C27, #C27, #C27, #C27, #C26, #C27, #C27, #C26, #C27, #C26, #C27, #C26, #C27, #C27, #C27, #C26, #C26, #C26]
   #C29 = 52
   #C30 = 96
-  #C31 = <core::int*>[#C29, #C30, #C29, #C30, #C30, #C30, #C30, #C30, #C29, #C30, #C30, #C29, #C30, #C29, #C30, #C29, #C30, #C30, #C30, #C29, #C29, #C29]
+  #C31 = <core::int>[#C29, #C30, #C29, #C30, #C30, #C30, #C30, #C30, #C29, #C30, #C30, #C29, #C30, #C29, #C30, #C29, #C30, #C30, #C30, #C29, #C29, #C29]
   #C32 = <core::Type>[#C2, #C2]
   #C33 = ffi::_FfiStructLayout {fieldTypes:#C32, packing:#C8}
   #C34 = core::pragma {name:#C1, options:#C33}
diff --git a/pkg/vm/testcases/transformations/ffi/compound_copies.dart.expect b/pkg/vm/testcases/transformations/ffi/compound_copies.dart.expect
index 5716061..50b2dc4 100644
--- a/pkg/vm/testcases/transformations/ffi/compound_copies.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/compound_copies.dart.expect
@@ -36,13 +36,13 @@
   }
   @#C10
   static get x#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C10
   static get y#offsetOf() → core::int
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C10
-  static get #sizeOf() → core::int*
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C19
 final class SomeUnion extends ffi::Union {
@@ -58,7 +58,7 @@
   get coordinate() → self::Coordinate
     return new self::Coordinate::#fromTypedDataBase(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::SomeUnion::coordinate#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
   set coordinate(synthesized self::Coordinate #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::SomeUnion::coordinate#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::SomeUnion::coordinate#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   @#C7
   get id() → core::int
     return ffi::_loadInt64(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::SomeUnion::id#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
@@ -72,13 +72,13 @@
   }
   @#C10
   static get coordinate#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C10
   static get id#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C10
-  static get #sizeOf() → core::int*
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {}
 constants  {
@@ -92,11 +92,11 @@
   #C8 = 0
   #C9 = "vm:prefer-inline"
   #C10 = core::pragma {name:#C9, options:#C4}
-  #C11 = <core::int*>[#C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8]
+  #C11 = <core::int>[#C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8, #C8]
   #C12 = 8
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 16
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = TypeLiteralConstant(self::Coordinate)
   #C17 = <core::Type>[#C16, #C2]
   #C18 = ffi::_FfiStructLayout {fieldTypes:#C17, packing:#C4}
diff --git a/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.aot.expect
index 2d1a5d3..c18452f 100644
--- a/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.aot.expect
@@ -26,7 +26,7 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get a0#offsetOf() → core::int
-    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   final self::Struct1ByteInt result = self::returnStruct1ByteIntNative([@vm.direct-call.metadata=dart.core::_IntegerImplementation.unary-] [@vm.inferred-type.metadata=int (skip check)] 1.{core::int::unary-}(){() → core::int});
@@ -55,7 +55,7 @@
   #C7 = "vm:prefer-inline"
   #C8 = core::pragma {name:#C7, options:#C4}
   #C9 = 0
-  #C10 = <core::int*>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
+  #C10 = <core::int>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
   #C11 = "ReturnStruct1ByteInt"
   #C12 = "#lib"
   #C13 = false
diff --git a/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.expect b/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.expect
index 97fcd76..4208338 100644
--- a/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/ffinative_compound_return.dart.expect
@@ -28,10 +28,10 @@
     return "(${this.{self::Struct1ByteInt::a0}{core::int}})";
   @#C9
   static get a0#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
-  static get #sizeOf() → core::int*
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   final self::Struct1ByteInt result = self::returnStruct1ByteIntNative(1.{core::int::unary-}(){() → core::int});
@@ -57,9 +57,9 @@
   #C8 = "vm:prefer-inline"
   #C9 = core::pragma {name:#C8, options:#C4}
   #C10 = 0
-  #C11 = <core::int*>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
+  #C11 = <core::int>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
   #C12 = 1
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = "ReturnStruct1ByteInt"
   #C15 = "#lib"
   #C16 = false
diff --git a/pkg/vm/testcases/transformations/ffi/native_fields.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/native_fields.dart.aot.expect
index b7236d6..3b57eb9 100644
--- a/pkg/vm/testcases/transformations/ffi/native_fields.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/native_fields.dart.aot.expect
@@ -25,12 +25,12 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get x#offsetOf() → core::int
-    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get y#offsetOf() → core::int
-    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C17
 final class MyUnion extends ffi::Union {
@@ -45,7 +45,7 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get indirectVector#offsetOf() → core::int
-    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C23
 static get aString() → ffi::Pointer<ffi::Char>
@@ -71,7 +71,7 @@
 static get manyNumbers() → ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>
   return new ffi::Array::_<ffi::Array<ffi::Array<ffi::Double>>>([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Native::_addressOf<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>>(#C34), #C9, #C36, #C39);
 static set manyNumbers([@vm.inferred-arg-type.metadata=dart.ffi::Array<dart.ffi::Array<dart.ffi::Array<dart.ffi::Double>>>] synthesized ffi::Array<ffi::Array<ffi::Array<ffi::Double>>> #externalFieldValue) → void
-  ffi::_memCopy([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Native::_addressOf<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>>(#C34), #C9, [@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, [@vm.direct-call.metadata=dart.ffi::_Compound._offsetInBytes] [@vm.inferred-type.metadata=int?] #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C41.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  ffi::_memCopy([@vm.inferred-type.metadata=dart.ffi::Pointer] ffi::Native::_addressOf<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>>(#C34), #C9, [@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, [@vm.direct-call.metadata=dart.ffi::_Compound._offsetInBytes] [@vm.inferred-type.metadata=int?] #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C41.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
 static method main() → void {
   core::print("first char of string: ${ffi::_loadAbiSpecificInt<ffi::Char>([@vm.inferred-type.metadata=dart.ffi::Pointer] self::aString, #C9)}");
   core::print("global int: {${self::anInt}}");
@@ -126,9 +126,9 @@
   #C7 = "vm:prefer-inline"
   #C8 = core::pragma {name:#C7, options:#C4}
   #C9 = 0
-  #C10 = <core::int*>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
+  #C10 = <core::int>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
   #C11 = 8
-  #C12 = <core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = TypeLiteralConstant(self::Vec2d)
   #C14 = TypeLiteralConstant(ffi::Pointer<core::Object>)
   #C15 = <core::Type>[#C13, #C14]
@@ -155,9 +155,9 @@
   #C36 = 1
   #C37 = 2
   #C38 = 3
-  #C39 = <core::int*>[#C37, #C38]
+  #C39 = <core::int>[#C37, #C38]
   #C40 = 48
-  #C41 = <core::int*>[#C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40]
+  #C41 = <core::int>[#C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40, #C40]
   #C42 = "anotherInt"
   #C43 = ffi::Native<ffi::Int> {symbol:#C42, assetId:#C20, isLeaf:#C21}
 }
diff --git a/pkg/vm/testcases/transformations/ffi/native_fields.dart.expect b/pkg/vm/testcases/transformations/ffi/native_fields.dart.expect
index 0b9473d..91c4568 100644
--- a/pkg/vm/testcases/transformations/ffi/native_fields.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/native_fields.dart.expect
@@ -31,13 +31,13 @@
     return ffi::_storeDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Vec2d::y#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C9
   static get x#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
   static get y#offsetOf() → core::int
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
-  static get #sizeOf() → core::int*
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C20
 final class MyUnion extends ffi::Union {
@@ -53,20 +53,20 @@
   get vector() → self::Vec2d
     return new self::Vec2d::#fromTypedDataBase(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::vector#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
   set vector(synthesized self::Vec2d #externalFieldValue) → void
-    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::vector#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+    return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::vector#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
   get indirectVector() → ffi::Pointer<self::Vec2d>
     return ffi::_loadPointer<self::Vec2d>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::indirectVector#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num});
   set indirectVector(synthesized ffi::Pointer<self::Vec2d> #externalFieldValue) → void
     return ffi::_storePointer<self::Vec2d>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::MyUnion::indirectVector#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C9
   static get vector#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
   static get indirectVector#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C9
-  static get #sizeOf() → core::int*
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C26
 static get aString() → ffi::Pointer<ffi::Char>
@@ -97,7 +97,7 @@
   return new ffi::Array::_<ffi::Array<ffi::Array<ffi::Double>>>(ffi::Native::_addressOf<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>>(#C44), #C10, #C39, #C46);
 @#C42
 static set manyNumbers(synthesized ffi::Array<ffi::Array<ffi::Array<ffi::Double>>> #externalFieldValue) → void
-  ffi::_memCopy(ffi::Native::_addressOf<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>>(#C44), #C10, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C48.{core::List::[]}(ffi::_abi()){(core::int) → core::int*});
+  ffi::_memCopy(ffi::Native::_addressOf<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>>(#C44), #C10, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C48.{core::List::[]}(ffi::_abi()){(core::int) → core::int});
 static method main() → void {
   core::print("first char of string: ${ffi::_loadAbiSpecificInt<ffi::Char>(self::aString, #C10)}");
   core::print("global int: {${self::anInt}}");
@@ -153,11 +153,11 @@
   #C8 = "vm:prefer-inline"
   #C9 = core::pragma {name:#C8, options:#C4}
   #C10 = 0
-  #C11 = <core::int*>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
+  #C11 = <core::int>[#C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10, #C10]
   #C12 = 8
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 16
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
   #C16 = TypeLiteralConstant(self::Vec2d)
   #C17 = TypeLiteralConstant(ffi::Pointer<core::Object>)
   #C18 = <core::Type>[#C16, #C17]
@@ -188,7 +188,7 @@
   #C43 = "manyNumbers"
   #C44 = ffi::Native<ffi::Array<ffi::Array<ffi::Array<ffi::Double>>>> {symbol:#C43, assetId:#C23, isLeaf:#C24}
   #C45 = core::pragma {name:#C21, options:#C44}
-  #C46 = <core::int*>[#C40, #C41]
+  #C46 = <core::int>[#C40, #C41]
   #C47 = 48
-  #C48 = <core::int*>[#C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47]
+  #C48 = <core::int>[#C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47, #C47]
 }
diff --git a/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.aot.expect
index d131626..16f655d 100644
--- a/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.aot.expect
+++ b/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.aot.expect
@@ -26,7 +26,7 @@
     return result;
   }
   static factory fromTypedList([@vm.inferred-arg-type.metadata=dart.typed_data::_Float64List] typ::TypedData typedList) → self::Coordinate {
-    return let final typ::TypedData #t1 = typedList in let final core::int* #t2 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 16)] self::Coordinate::#sizeOf in new self::Coordinate::#fromTypedData(#t1);
+    return let final typ::TypedData #t1 = typedList in let final core::int #t2 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 16)] self::Coordinate::#sizeOf in new self::Coordinate::#fromTypedData(#t1);
   }
 
   [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2]
@@ -52,17 +52,17 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get x#offsetOf() → core::int
-    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C10.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C8
   static get y#offsetOf() → core::int
-    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 
   [@vm.unboxing-info.metadata=()->i]
   @#C8
-  static get #sizeOf() → core::int*
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → 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::<}(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}) {
@@ -97,9 +97,9 @@
   #C7 = "vm:prefer-inline"
   #C8 = core::pragma {name:#C7, options:#C4}
   #C9 = 0
-  #C10 = <core::int*>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
+  #C10 = <core::int>[#C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9, #C9]
   #C11 = 8
-  #C12 = <core::int*>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
+  #C12 = <core::int>[#C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11, #C11]
   #C13 = 16
-  #C14 = <core::int*>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
+  #C14 = <core::int>[#C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13, #C13]
 }
diff --git a/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.expect b/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.expect
index 67c980e..6e139fe 100644
--- a/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/struct_typed_data.dart.expect
@@ -42,13 +42,13 @@
     return ffi::_storeDouble(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::Coordinate::y#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue);
   @#C10
   static get x#offsetOf() → core::int
-    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C11.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C10
   static get y#offsetOf() → core::int
-    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C13.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
   @#C10
-  static get #sizeOf() → core::int*
-    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+  static get #sizeOf() → core::int
+    return #C15.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 static method main() → void {
   for (core::int i = 0; i.{core::num::<}(100){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
@@ -84,9 +84,9 @@
   #C8 = ffi::Double {}
   #C9 = "vm:prefer-inline"
   #C10 = core::pragma {name:#C9, options:#C4}
-  #C11 = <core::int*>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
+  #C11 = <core::int>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
   #C12 = 8
-  #C13 = <core::int*>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
+  #C13 = <core::int>[#C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12, #C12]
   #C14 = 16
-  #C15 = <core::int*>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
+  #C15 = <core::int>[#C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14, #C14]
 }
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 bbddac5..ffd49cc 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
@@ -47,7 +47,7 @@
   [@vm.unboxing-info.metadata=()->i]
   @#C13
   static get nested#offsetOf() → core::int
-    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int*};
+    return #C14.{core::List::[]}(ffi::_abi()){(core::int) → core::int};
 }
 @#C6
 final class Struct12 extends ffi::Struct {
@@ -176,7 +176,7 @@
   #C11 = core::pragma {name:#C1, options:#C10}
   #C12 = "vm:prefer-inline"
   #C13 = core::pragma {name:#C12, options:#C4}
-  #C14 = <core::int*>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
+  #C14 = <core::int>[#C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7, #C7]
   #C15 = static-tearoff self::useStruct3
   #C16 = static-tearoff self::returnStruct7
   #C17 = 1
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 a92d1d6..7c76300 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
@@ -63,16 +63,16 @@
 
   [@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(#C1, 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(#C1, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic});
 
   [@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(#C5, 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(#C5, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic});
 
   [@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-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-arg-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, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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});
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C
@@ -92,16 +92,16 @@
 
   [@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(#C1, 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(#C1, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic});
 
   [@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(#C5, 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(#C5, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic});
 
   [@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-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-arg-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, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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});
 }
 class E extends core::Object implements self::A {
   synthetic constructor •() → self::E
@@ -185,9 +185,9 @@
 }
 constants  {
   #C1 = #foo
-  #C2 = <core::Type*>[]
+  #C2 = <core::Type>[]
   #C3 = <dynamic>[]
-  #C4 = <core::Symbol*, dynamic>{}
+  #C4 = <core::Symbol, dynamic>{}
   #C5 = #bar
   #C6 = #bazz
   #C7 = null
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 c4ae805..20fb1cc 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
@@ -23,15 +23,15 @@
 
   [@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>([@vm.inferred-arg-type.metadata=dart.core::_Closure] (self::B::T%) → FutureOr<self::B::then::R%>onValue, {[@vm.inferred-arg-type.metadata=dart.core::_Closure?] core::Function? onError = #C1}) → asy::Future<self::B::then::R%>
-    return _in::unsafeCast<asy::Future<self::B::then::R%>>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable<core::Type*>([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Type*>] core::_GrowableList::_literal1<core::Type*>(self::B::then::R%)), [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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});
+    return _in::unsafeCast<asy::Future<self::B::then::R%>>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable<core::Type>([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Type>] core::_GrowableList::_literal1<core::Type>(self::B::then::R%)), [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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});
 
   [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6]
   no-such-method-forwarder method catchError([@vm.inferred-arg-type.metadata=dart.core::_Closure] core::Function onError) → asy::Future<self::B::T%>
-    return _in::unsafeCast<asy::Future<self::B::T%>>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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: #C1}))){(core::Invocation) → dynamic});
+    return _in::unsafeCast<asy::Future<self::B::T%>>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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: #C1}))){(core::Invocation) → dynamic});
 
   [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8]
   no-such-method-forwarder method whenComplete([@vm.inferred-arg-type.metadata=dart.core::_Closure] () → FutureOr<void>action) → asy::Future<self::B::T%>
-    return _in::unsafeCast<asy::Future<self::B::T%>>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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>(#C8))){(core::Invocation) → dynamic});
+    return _in::unsafeCast<asy::Future<self::B::T%>>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, [@vm.inferred-type.metadata=dart.core::_ImmutableList] 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>(#C8))){(core::Invocation) → dynamic});
 }
 static method createB<T extends core::Object? = dynamic>() → self::B<dynamic>
   return new self::B::•<self::createB::T%>();
@@ -43,8 +43,8 @@
   #C2 = #then
   #C3 = #onError
   #C4 = #catchError
-  #C5 = <core::Type*>[]
+  #C5 = <core::Type>[]
   #C6 = #test
   #C7 = #whenComplete
-  #C8 = <core::Symbol*, dynamic>{}
+  #C8 = <core::Symbol, dynamic>{}
 }
diff --git a/runtime/vm/kernel_binary.h b/runtime/vm/kernel_binary.h
index af16ca0..538fd1c 100644
--- a/runtime/vm/kernel_binary.h
+++ b/runtime/vm/kernel_binary.h
@@ -435,6 +435,7 @@
       case KernelNullability::kNullable:
         return Nullability::kNullable;
       case KernelNullability::kLegacy:
+        FATAL("Legacy nullability is not supported.");
         return Nullability::kLegacy;
       case KernelNullability::kNonNullable:
       case KernelNullability::kUndetermined:
diff --git a/tests/language/metadata/constructor_new_error_test.dart b/tests/language/metadata/constructor_new_error_test.dart
new file mode 100644
index 0000000..9ccf03a
--- /dev/null
+++ b/tests/language/metadata/constructor_new_error_test.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'constructor_new_error_test.dart' as self;
+
+class Class {
+  const Class();
+}
+
+class GenericClass<X, Y> {
+  const GenericClass();
+}
+
+@Class.new
+// [error column 1, length 10]
+// [analyzer] COMPILE_TIME_ERROR.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS
+// [error column 2]
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@GenericClass.new
+// [error column 1, length 17]
+// [analyzer] COMPILE_TIME_ERROR.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS
+// [error column 2]
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@GenericClass<int, String>.new
+// [error column 1, length 30]
+// [analyzer] COMPILE_TIME_ERROR.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS
+// [error column 2]
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+//                         ^^^
+// [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED
+// [cfe] An annotation with type arguments must be followed by an argument list.
+@self.Class.new
+// [error column 1, length 15]
+// [analyzer] COMPILE_TIME_ERROR.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS
+//    ^
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.GenericClass.new
+// [error column 1, length 22]
+// [analyzer] COMPILE_TIME_ERROR.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS
+//    ^
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+@self.GenericClass<int, String>.new
+// [error column 1, length 35]
+// [analyzer] COMPILE_TIME_ERROR.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS
+//    ^
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
+//                              ^^^
+// [analyzer] SYNTACTIC_ERROR.ANNOTATION_WITH_TYPE_ARGUMENTS_UNINSTANTIATED
+// [cfe] An annotation with type arguments must be followed by an argument list.
+main() {}
diff --git a/tests/language/metadata/constructor_new_test.dart b/tests/language/metadata/constructor_new_test.dart
new file mode 100644
index 0000000..7d4d820
--- /dev/null
+++ b/tests/language/metadata/constructor_new_test.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'constructor_new_test.dart' as self;
+
+class Class {
+  const Class();
+}
+
+class GenericClass<X, Y> {
+  const GenericClass();
+}
+
+@Class.new()
+@GenericClass.new()
+@GenericClass<int, String>.new()
+@self.Class.new()
+@self.GenericClass.new()
+@self.GenericClass<int, String>.new()
+main() {}
diff --git a/tests/lib/mirrors/metadata_allowed_values_test.dart b/tests/lib/mirrors/metadata_allowed_values_test.dart
index 61a3640..3e8e458 100644
--- a/tests/lib/mirrors/metadata_allowed_values_test.dart
+++ b/tests/lib/mirrors/metadata_allowed_values_test.dart
@@ -117,6 +117,8 @@
    @V.tearOff
 // ^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.INVALID_ANNOTATION
+//    ^
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 class V {
   static tearOff() {}
 }
@@ -126,6 +128,8 @@
    @topLevelTearOff
 // ^^^^^^^^^^^^^^^^
 // [analyzer] COMPILE_TIME_ERROR.INVALID_ANNOTATION
+//  ^
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 class W {}
 
    @TypeParameter
@@ -254,7 +258,7 @@
 // ^^^
 // [analyzer] COMPILE_TIME_ERROR.INVALID_ANNOTATION
 //  ^
-// [cfe] Constant evaluation error:
+// [cfe] This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 class KK {
   const KK();
 }
diff --git a/tools/VERSION b/tools/VERSION
index 94d4edf..e956ae2 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 3
 MINOR 5
 PATCH 0
-PRERELEASE 104
+PRERELEASE 105
 PRERELEASE_PATCH 0