Version 2.14.0-195.0.dev

Merge commit 'f4352180cc5a5ac32dc182a6aec753ecf264bdef' into 'dev'
diff --git a/pkg/analysis_server/test/analysis/notification_errors_test.dart b/pkg/analysis_server/test/analysis/notification_errors_test.dart
index 2cf499c..c311ec8 100644
--- a/pkg/analysis_server/test/analysis/notification_errors_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_errors_test.dart
@@ -116,7 +116,7 @@
     <uses-feature android:name="android.software.home_screen" />
 </manifest>
 ''').path;
-    newFile(join(projectPath, 'analysis_options.yaml'), content: '''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   optional-checks:
     chrome-os-manifest-checks: true
@@ -147,7 +147,7 @@
     <uses-feature android:name="android.software.home_screen" />
 </manifest>
 ''').path;
-    newFile(join(projectPath, 'analysis_options.yaml'), content: '''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   optional-checks:
     chrome-os-manifest-checks: true
@@ -271,7 +271,7 @@
   }
 
   Future<void> test_excludedFolder() async {
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   exclude:
     - excluded/**
@@ -320,7 +320,7 @@
   Future<void> test_lintError() async {
     var camelCaseTypesLintName = 'camel_case_types';
 
-    newFile(join(projectPath, 'analysis_options.yaml'), content: '''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 linter:
   rules:
     - $camelCaseTypesLintName
@@ -518,8 +518,7 @@
   }
 
   Future<void> test_pubspecFile_lint() async {
-    var optionsPath = join(projectPath, 'analysis_options.yaml');
-    newFile(optionsPath, content: '''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 linter:
   rules:
     - sort_pub_dependencies
diff --git a/pkg/analysis_server/test/analysis_abstract.dart b/pkg/analysis_server/test/analysis_abstract.dart
index c55c715..86ec647 100644
--- a/pkg/analysis_server/test/analysis_abstract.dart
+++ b/pkg/analysis_server/test/analysis_abstract.dart
@@ -62,12 +62,6 @@
 
   AnalysisDriver get testDiver => server.getAnalysisDriver(testFile)!;
 
-  void addAnalysisOptionsFile(String content) {
-    newFile(
-        resourceProvider.pathContext.join(projectPath, 'analysis_options.yaml'),
-        content: content);
-  }
-
   void addAnalysisSubscription(AnalysisService service, String file) {
     // add file to subscription
     var files = analysisSubscriptions[service];
@@ -105,7 +99,7 @@
         buffer.writeln('    - $experiment');
       }
     }
-    addAnalysisOptionsFile(buffer.toString());
+    newAnalysisOptionsYamlFile(projectPath, content: buffer.toString());
   }
 
   AnalysisServer createAnalysisServer() {
diff --git a/pkg/analysis_server/test/analysis_server_test.dart b/pkg/analysis_server/test/analysis_server_test.dart
index c416406..ca5385e 100644
--- a/pkg/analysis_server/test/analysis_server_test.dart
+++ b/pkg/analysis_server/test/analysis_server_test.dart
@@ -162,7 +162,7 @@
       test_setAnalysisSubscriptions_fileInIgnoredFolder_newOptions() async {
     var path = convertPath('/project/samples/sample.dart');
     newFile(path);
-    newFile('/project/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile('/project', content: r'''
 analyzer:
   exclude:
     - 'samples/**'
@@ -183,7 +183,7 @@
       test_setAnalysisSubscriptions_fileInIgnoredFolder_oldOptions() async {
     var path = convertPath('/project/samples/sample.dart');
     newFile(path);
-    newFile('/project/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile('/project', content: r'''
 analyzer:
   exclude:
     - 'samples/**'
diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart
index dd97d60..af1689b 100644
--- a/pkg/analysis_server/test/domain_analysis_test.dart
+++ b/pkg/analysis_server/test/domain_analysis_test.dart
@@ -364,7 +364,7 @@
     );
 
     // Write the options file that excludes b.dart
-    newFile('$testPackageRootPath/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: r'''
 analyzer:
   exclude:
     - lib/b.dart
@@ -416,7 +416,7 @@
 
     newFile('$testPackageLibPath/a.dart', content: '');
 
-    newFile('$testPackageRootPath/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: '''
 analyzer:
   optional-checks:
     chrome-os-manifest-checks: true
@@ -485,7 +485,7 @@
     var a_path = '$projectPath/lib/a.dart';
     var b_path = '$projectPath/lib/b.dart';
 
-    newFile('$projectPath/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile(projectPath, content: r'''
 analyzer:
   exclude:
     - "**/a.dart"
@@ -621,7 +621,7 @@
 
     // Write an empty file to force a new analysis context.
     // We look for `pubspec.yaml` files only in analysis context roots.
-    newFile('$testPackageRootPath/analysis_options.yaml', content: '');
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: '');
 
     setRoots(included: [workspaceRootPath], excluded: []);
     await server.onAnalysisComplete;
@@ -723,7 +723,7 @@
     // Has an error - no touch screen.
     newFile(path, content: '<manifest/>');
 
-    newFile('$testPackageRootPath/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: '''
 analyzer:
   optional-checks:
     chrome-os-manifest-checks: true
@@ -814,7 +814,7 @@
     var a_path = '$testPackageLibPath/a.dart';
     var b_path = '$testPackageLibPath/b.dart';
 
-    newFile('$testPackageRootPath/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: r'''
 analyzer:
   exclude:
     - "**/a.dart"
@@ -1006,7 +1006,7 @@
     // Has an error - no touch screen.
     newFile(path, content: '<manifest/>');
 
-    newFile('$testPackageRootPath/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: '''
 analyzer:
   optional-checks:
     chrome-os-manifest-checks: true
@@ -1049,7 +1049,7 @@
     var a_path = '$testPackageLibPath/a.dart';
     var b_path = '$testPackageLibPath/b.dart';
 
-    newFile('$testPackageRootPath/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: r'''
 analyzer:
   exclude:
     - "**/a.dart"
@@ -1349,7 +1349,7 @@
 
     newFile('$testPackageLibPath/a.dart', content: '');
 
-    newFile('$testPackageRootPath/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile(testPackageRootPath, content: '''
 analyzer:
   optional-checks:
     chrome-os-manifest-checks: true
diff --git a/pkg/analysis_server/test/domain_edit_dartfix_test.dart b/pkg/analysis_server/test/domain_edit_dartfix_test.dart
index fa53b77..059d4ec 100644
--- a/pkg/analysis_server/test/domain_edit_dartfix_test.dart
+++ b/pkg/analysis_server/test/domain_edit_dartfix_test.dart
@@ -110,7 +110,7 @@
 
   Future<void> test_excludedSource() async {
     // Add analysis options to exclude the lib directory then reanalyze
-    newFile('/project/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile('/project', content: '''
 analyzer:
   exclude:
     - lib/**
diff --git a/pkg/analysis_server/test/edit/bulk_fixes_test.dart b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
index d48358f..5f58bc1 100644
--- a/pkg/analysis_server/test/edit/bulk_fixes_test.dart
+++ b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
@@ -60,7 +60,7 @@
   }
 
   Future<void> test_annotateOverrides_excludedFile() async {
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   exclude:
     - test/**
@@ -83,7 +83,7 @@
 
   Future<void> test_annotateOverrides_excludedSubProject() async {
     // Root project.
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   exclude:
     - test/data/**
@@ -147,7 +147,7 @@
   }
 
   Future<void> test_details() async {
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 linter:
   rules:
     - annotate_overrides
@@ -181,7 +181,7 @@
   }
 
   Future<void> test_unnecessaryNew() async {
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 linter:
   rules:
     - unnecessary_new
@@ -205,7 +205,7 @@
     if (Platform.isWindows) {
       fail('Should not be passing on Windows, but it does');
     }
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 linter:
   rules:
     - prefer_collection_literals
@@ -228,7 +228,7 @@
   }
 
   Future<void> test_unnecessaryNew_ignoredInOptions() async {
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   errors:
     unnecessary_new: ignore
@@ -244,7 +244,7 @@
   }
 
   Future<void> test_unnecessaryNew_ignoredInSource() async {
-    addAnalysisOptionsFile('''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 linter:
   rules:
     - unnecessary_new
diff --git a/pkg/analysis_server/test/edit/sort_members_test.dart b/pkg/analysis_server/test/edit/sort_members_test.dart
index 52c1932..f6e6bd6 100644
--- a/pkg/analysis_server/test/edit/sort_members_test.dart
+++ b/pkg/analysis_server/test/edit/sort_members_test.dart
@@ -195,7 +195,7 @@
   }
 
   Future<void> test_OK_genericFunctionType() async {
-    newFile('$projectPath/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   strong-mode: true
 ''');
diff --git a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
index e19ca34..0620fbf 100644
--- a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
@@ -263,7 +263,7 @@
   Future<void> test_import_only_dart_files() async {
     testFile = convertPath('$testPackageRootPath/test.dart');
     newFile('$testPackageRootPath/other.dart');
-    newFile('$testPackageRootPath/analysis_options.yaml');
+    newAnalysisOptionsYamlFile(testPackageRootPath);
 
     addTestSource('import "package:^";');
     await computeSuggestions();
diff --git a/pkg/analysis_server/test/src/flutter/flutter_outline_notification_test.dart b/pkg/analysis_server/test/src/flutter/flutter_outline_notification_test.dart
index df54552..a7e6a4a 100644
--- a/pkg/analysis_server/test/src/flutter/flutter_outline_notification_test.dart
+++ b/pkg/analysis_server/test/src/flutter/flutter_outline_notification_test.dart
@@ -75,7 +75,7 @@
     newDotPackagesFile(projectPath, content: '''
 flutter:${flutterFolder.toUri()}
 ''');
-    newFile('$projectPath/analysis_options.yaml', content: '''
+    newAnalysisOptionsYamlFile(projectPath, content: '''
 analyzer:
   strong-mode: true
 ''');
diff --git a/pkg/analysis_server/tool/code_completion/completion_metrics.dart b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
index ca754b5..d32c961 100644
--- a/pkg/analysis_server/tool/code_completion/completion_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
@@ -166,6 +166,12 @@
             'score by pointing out the locations that are causing the biggest '
             'impact.',
         negatable: false)
+    ..addFlag(CompletionMetricsOptions.PRINT_SHADOWED_COMPLETION_DETAILS,
+        defaultsTo: false,
+        help: 'Print detailed information every time a completion request '
+            'produces a suggestions whose name matches the expected suggestion '
+            'but that is referencing a different element',
+        negatable: false)
     ..addFlag(CompletionMetricsOptions.PRINT_SLOWEST_RESULTS,
         defaultsTo: false,
         help: 'Print information about the completion requests that were the '
@@ -331,6 +337,14 @@
   /// The completion locations for which no relevance table was available.
   final Set<String> missingCompletionLocationTables = {};
 
+  /// A map, keyed by completion location of the missed completions at those
+  /// locations.
+  Map<String, List<ExpectedCompletion>> missedCompletions = {};
+
+  /// A map, keyed by completion location of the completions at those locations
+  /// where a shadowed element was suggested rather than the visible one.
+  Map<String, List<ShadowedCompletion>> shadowedCompletions = {};
+
   final Map<CompletionGroup, List<CompletionResult>> slowestResults = {};
 
   final Map<CompletionGroup, List<CompletionResult>> worstResults = {};
@@ -471,6 +485,27 @@
     _recordMissingInformation(listener);
   }
 
+  /// Record an [expectedCompletion] at the [completionLocation] for which no
+  /// suggestion was produced.
+  void recordMissedCompletion(
+      String? completionLocation, ExpectedCompletion expectedCompletion) {
+    missedCompletions
+        .putIfAbsent(completionLocation ?? 'unknown', () => [])
+        .add(expectedCompletion);
+  }
+
+  /// Record an [expectedCompletion] at the [completionLocation] for which a
+  /// suggestion (the [closeMatchSuggestion]) was produced when the suggestion
+  /// was for a different element but with the same name.
+  void recordShadowedCompletion(
+      String? completionLocation,
+      ExpectedCompletion expectedCompletion,
+      protocol.CompletionSuggestion closeMatchSuggestion) {
+    shadowedCompletions
+        .putIfAbsent(completionLocation ?? 'unknown', () => [])
+        .add(ShadowedCompletion(expectedCompletion, closeMatchSuggestion));
+  }
+
   Map<String, dynamic> toJson() {
     return {
       'name': name,
@@ -721,7 +756,8 @@
       metrics.completionElementKindCounter
           .count(expectedCompletion.elementKind.toString());
 
-      if (options.printMissedCompletionDetails) {
+      if (options.printMissedCompletionDetails ||
+          options.printShadowedCompletionDetails) {
         protocol.CompletionSuggestion? closeMatchSuggestion;
         for (var suggestion in suggestions) {
           if (suggestion.completion == expectedCompletion.completion) {
@@ -729,15 +765,16 @@
           }
         }
 
-        print('missing completion (${metrics.name}):');
-        print('$expectedCompletion');
-        if (closeMatchSuggestion != null) {
-          print('    close matching completion that was in the list:');
-          print('    $closeMatchSuggestion');
+        if (closeMatchSuggestion == null &&
+            options.printMissedCompletionDetails) {
+          metrics.recordMissedCompletion(
+              completionLocation, expectedCompletion);
+        } else if (closeMatchSuggestion != null &&
+            options.printShadowedCompletionDetails) {
+          metrics.recordShadowedCompletion(
+              completionLocation, expectedCompletion, closeMatchSuggestion);
         }
-        print('');
       }
-
       return -1;
     }
   }
@@ -847,11 +884,6 @@
 
   void printMetrics(CompletionMetrics metrics) {
     printHeading(1, 'Completion metrics for ${metrics.name}');
-    if (options.printMissedCompletionSummary) {
-      printCounter(metrics.completionMissedTokenCounter);
-      printCounter(metrics.completionKindCounter);
-      printCounter(metrics.completionElementKindCounter);
-    }
 
     List<String> toRow(MeanReciprocalRankComputer computer) {
       return [
@@ -906,13 +938,43 @@
       printTable(table);
     }
     //
-    // Print information that would normally appear in the comprison when there
-    // is no comparison section.
+    // Print information that would normally appear in the comparison section
+    // when there is no comparison section.
     //
     if (targetMetrics.length == 1) {
       printOtherMetrics(metrics);
       printCompletionCounts(metrics);
     }
+    //
+    // Print information about missed completions.
+    //
+    if (options.printMissedCompletionSummary) {
+      printCounter(metrics.completionMissedTokenCounter);
+      printCounter(metrics.completionKindCounter);
+      printCounter(metrics.completionElementKindCounter);
+    }
+    printMissedCompletionDetails(metrics);
+    printShadowedCompletionDetails(metrics);
+  }
+
+  void printMissedCompletionDetails(CompletionMetrics metrics) {
+    if (options.printMissedCompletionDetails) {
+      printHeading(2, 'Missed Completions');
+      var needsBlankLine = false;
+      var entries = metrics.missedCompletions.entries.toList()
+        ..sort((first, second) => first.key.compareTo(second.key));
+      for (var entry in entries) {
+        if (needsBlankLine) {
+          print('');
+        } else {
+          needsBlankLine = true;
+        }
+        printHeading(3, entry.key);
+        for (var expectedCompletion in entry.value) {
+          print('- $expectedCompletion');
+        }
+      }
+    }
   }
 
   void printMissingInformation(CompletionMetrics metrics) {
@@ -1045,6 +1107,28 @@
     }
   }
 
+  void printShadowedCompletionDetails(CompletionMetrics metrics) {
+    if (options.printShadowedCompletionDetails) {
+      printHeading(2, 'Shadowed Completions');
+      var needsBlankLine = false;
+      var entries = metrics.shadowedCompletions.entries.toList()
+        ..sort((first, second) => first.key.compareTo(second.key));
+      for (var entry in entries) {
+        if (needsBlankLine) {
+          print('');
+        } else {
+          needsBlankLine = true;
+        }
+        printHeading(3, entry.key);
+        for (var shadowedCompletion in entry.value) {
+          print('- ${shadowedCompletion.expectedCompletion}');
+          print('    close matching completion that was in the list:');
+          print('    ${shadowedCompletion.closeMatchSuggestion}');
+        }
+      }
+    }
+  }
+
   void printSlowestResults(CompletionMetrics metrics) {
     var slowestResults = metrics.slowestResults;
     var entries = slowestResults.entries.toList();
@@ -1524,6 +1608,13 @@
   /// at each completion location.
   static const String PRINT_MRR_BY_LOCATION = 'print-mrr-by-location';
 
+  /// A flag that causes detailed information to be printed every time a
+  /// completion request produce a suggestions whose name matches the expected
+  /// suggestion but that is referencing a different element (one that's
+  /// shadowed by the correct element).
+  static const String PRINT_SHADOWED_COMPLETION_DETAILS =
+      'print-shadowed-completion-details';
+
   /// A flag that causes information to be printed about the completion requests
   /// that were the slowest to return suggestions.
   static const String PRINT_SLOWEST_RESULTS = 'print-slowest-results';
@@ -1554,6 +1645,11 @@
   /// score achieved at each completion location.
   final bool printMrrByLocation;
 
+  /// A flag indicating whether information should be printed every time a
+  /// completion request fails to produce a suggestions matching the expected
+  /// suggestion.
+  final bool printShadowedCompletionDetails;
+
   /// A flag indicating whether information should be printed about the
   /// completion requests that were the slowest to return suggestions.
   final bool printSlowestResults;
@@ -1569,6 +1665,8 @@
         printMissedCompletionSummary: results[PRINT_MISSED_COMPLETION_SUMMARY],
         printMissingInformation: results[PRINT_MISSING_INFORMATION],
         printMrrByLocation: results[PRINT_MRR_BY_LOCATION],
+        printShadowedCompletionDetails:
+            results[PRINT_SHADOWED_COMPLETION_DETAILS],
         printSlowestResults: results[PRINT_SLOWEST_RESULTS],
         printWorstResults: results[PRINT_WORST_RESULTS]);
   }
@@ -1579,6 +1677,7 @@
       required this.printMissedCompletionSummary,
       required this.printMissingInformation,
       required this.printMrrByLocation,
+      required this.printShadowedCompletionDetails,
       required this.printSlowestResults,
       required this.printWorstResults})
       : assert(overlay == OVERLAY_NONE ||
@@ -1872,6 +1971,15 @@
   RelevanceTables(this.name, this.elementKindRelevance, this.keywordRelevance);
 }
 
+/// Information about a completion suggestion that suggested a shadowed element.
+class ShadowedCompletion {
+  final ExpectedCompletion expectedCompletion;
+
+  final protocol.CompletionSuggestion closeMatchSuggestion;
+
+  ShadowedCompletion(this.expectedCompletion, this.closeMatchSuggestion);
+}
+
 /// The information being remembered about an individual suggestion.
 class SuggestionData {
   /// The suggestion that was produced.
diff --git a/pkg/analysis_server/tool/code_completion/visitors.dart b/pkg/analysis_server/tool/code_completion/visitors.dart
index 5e86cd3..e681cc4 100644
--- a/pkg/analysis_server/tool/code_completion/visitors.dart
+++ b/pkg/analysis_server/tool/code_completion/visitors.dart
@@ -777,6 +777,11 @@
     if (node.thisOrAncestorOfType<LibraryDirective>() != null) {
       return false;
     }
+    // Ignore identifiers in hide and show combinators because we don't suggest
+    // names that are already in the list.
+    if (node.parent is HideCombinator || node.parent is ShowCombinator) {
+      return false;
+    }
 
     // TODO (jwren) If there is a mode of completing at a token location where
     //  the token is removed before the completion query happens, then this
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 6a7ad79..72a4869 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -4,6 +4,8 @@
   and the last elements of an interpolation.
 * Deprecated `ImportElement.prefixOffset`, use `prefix.nameOffset` instead.
 * Deprecated `CompilationUnitElement.types`, use `classes` instead.
+* Added `Element.nonSynthetic`, use it to get the element that caused creation
+  of this element, e.g. the field for a synthetic getter.
 
 ## 1.7.0
 * Require `meta: ^1.4.0`.
diff --git a/pkg/analyzer/doc/tutorial/element.md b/pkg/analyzer/doc/tutorial/element.md
index b0169e4..6c5509f 100644
--- a/pkg/analyzer/doc/tutorial/element.md
+++ b/pkg/analyzer/doc/tutorial/element.md
@@ -71,7 +71,7 @@
 
 ```dart
 void printMembers(CompilationUnitElement unitElement) {
-  for (ClassElement classElement in unitElement.types) {
+  for (ClassElement classElement in unitElement.classes) {
     print(classElement.name);
     for (ConstructorElement constructorElement in classElement.constructors) {
       if (!constructorElement.isSynthetic) {
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
index 39e66dc..a10cb66d 100644
--- a/pkg/analyzer/lib/dart/ast/visitor.dart
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -330,8 +330,12 @@
   R? visitFunctionBody(FunctionBody node) => visitNode(node);
 
   @override
-  R? visitFunctionDeclaration(FunctionDeclaration node) =>
-      visitNamedCompilationUnitMember(node);
+  R? visitFunctionDeclaration(FunctionDeclaration node) {
+    if (node.parent is FunctionDeclarationStatement) {
+      return visitNode(node);
+    }
+    return visitNamedCompilationUnitMember(node);
+  }
 
   @override
   R? visitFunctionDeclarationStatement(FunctionDeclarationStatement node) =>
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 96d810b..22e6421b 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -666,6 +666,16 @@
   /// does not have a name, or otherwise does not have an offset.
   int get nameOffset;
 
+  /// Return the non-synthetic element that caused this element to be created.
+  ///
+  /// If this element is not synthetic, then the element itself is returned.
+  ///
+  /// If this element is synthetic, then the corresponding non-synthetic
+  /// element is returned. For example, for a synthetic getter of a
+  /// non-synthetic field the field is returned; for a synthetic constructor
+  /// the enclosing class is returned.
+  Element get nonSynthetic;
+
   /// Return the analysis session in which this element is defined.
   AnalysisSession? get session;
 
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index d89aaf1..99e984b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -82,7 +82,7 @@
 /// TODO(scheglov) Clean up the list of implicitly analyzed files.
 class AnalysisDriver implements AnalysisDriverGeneric {
   /// The version of data format, should be incremented on every format change.
-  static const int DATA_VERSION = 144;
+  static const int DATA_VERSION = 145;
 
   /// The number of exception contexts allowed to write. Once this field is
   /// zero, we stop writing any new exception contexts in this process.
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 2735e16..1ddfbb1 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1264,6 +1264,9 @@
   bool get hasInitializer => false;
 
   @override
+  Element get nonSynthetic => this;
+
+  @override
   InterfaceType get type =>
       ElementTypeProvider.current.getFieldType(this) as InterfaceType;
 
@@ -1352,6 +1355,9 @@
   }
 
   @override
+  Element get nonSynthetic => _enum;
+
+  @override
   set type(DartType type) {
     assert(false);
   }
@@ -1460,6 +1466,11 @@
   ElementKind get kind => ElementKind.CONSTRUCTOR;
 
   @override
+  Element get nonSynthetic {
+    return isSynthetic ? enclosingElement : this;
+  }
+
+  @override
   ConstructorElement? get redirectedConstructor {
     linkedData?.read(this);
     return _redirectedConstructor;
@@ -2340,6 +2351,9 @@
   }
 
   @override
+  Element get nonSynthetic => this;
+
+  @override
   AnalysisSession? get session {
     return enclosingElement?.session;
   }
@@ -4093,6 +4107,14 @@
   }
 
   @override
+  Element get nonSynthetic {
+    if (isSynthetic && enclosingElement is EnumElementImpl) {
+      return enclosingElement;
+    }
+    return this;
+  }
+
+  @override
   T? accept<T>(ElementVisitor<T> visitor) => visitor.visitMethodElement(this);
 }
 
@@ -4402,6 +4424,9 @@
   int get nameOffset => -1;
 
   @override
+  Element get nonSynthetic => this;
+
+  @override
   Source? get source => null;
 
   @override
@@ -4720,6 +4745,11 @@
   }
 
   @override
+  Element get nonSynthetic {
+    return setter.variable;
+  }
+
+  @override
   DartType get type => ElementTypeProvider.current.getVariableType(this);
 
   @override
@@ -4958,6 +4988,16 @@
   bool get isGetter => true;
 
   @override
+  Element get nonSynthetic {
+    if (enclosingElement is EnumElementImpl) {
+      if (name == 'index' || name == 'values') {
+        return enclosingElement;
+      }
+    }
+    return variable;
+  }
+
+  @override
   DartType get returnType =>
       ElementTypeProvider.current.getExecutableReturnType(this);
 
@@ -5007,6 +5047,9 @@
   bool get isSetter => true;
 
   @override
+  Element get nonSynthetic => variable;
+
+  @override
   List<ParameterElement> get parameters =>
       ElementTypeProvider.current.getExecutableParameters(this);
 
@@ -5095,6 +5138,20 @@
   }
 
   @override
+  Element get nonSynthetic {
+    if (isSynthetic) {
+      if (enclosingElement is EnumElementImpl) {
+        if (name == 'index' || name == 'values') {
+          return enclosingElement;
+        }
+      }
+      return (getter ?? setter)!;
+    } else {
+      return this;
+    }
+  }
+
+  @override
   DartType get type => ElementTypeProvider.current.getFieldType(this);
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 119513f..bd52748 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -564,6 +564,9 @@
   int get nameOffset => _declaration.nameOffset;
 
   @override
+  Element get nonSynthetic => _declaration.nonSynthetic;
+
+  @override
   AnalysisSession? get session => _declaration.session;
 
   @override
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index e7e2a81..cfc9977 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -629,7 +629,7 @@
     for (var i = 0; i < constantCount; i++) {
       var constantName = _reader.readStringReference();
       var field = ConstFieldElementImpl_EnumValue(element, constantName, i);
-      var constantRef = containerRef.getChild(name);
+      var constantRef = containerRef.getChild(constantName);
       field.reference = constantRef;
       constantRef.element = field;
       fields.add(field);
diff --git a/pkg/analyzer/lib/src/summary2/informative_data.dart b/pkg/analyzer/lib/src/summary2/informative_data.dart
index b6b880d..d6bb7cb 100644
--- a/pkg/analyzer/lib/src/summary2/informative_data.dart
+++ b/pkg/analyzer/lib/src/summary2/informative_data.dart
@@ -1221,10 +1221,10 @@
         // TODO(scheglov) Replace with some kind of double-iterating list.
         var declaration = node.parent!.parent as FieldDeclaration;
 
-        var collector = _OffsetsCollector();
-        declaration.metadata.accept(collector);
-        node.initializer?.accept(collector);
-        sink.writeUint30List(collector.offsets);
+        _writeOffsets(
+          metadata: declaration.metadata,
+          constantInitializer: node.initializer,
+        );
       },
     );
   }
@@ -1306,11 +1306,13 @@
   void _writeOffsets({
     NodeList<Annotation>? metadata,
     TypeParameterList? typeParameters,
+    Expression? constantInitializer,
     List<EnumConstantDeclaration>? enumConstants,
   }) {
     var collector = _OffsetsCollector();
     metadata?.accept(collector);
     typeParameters?.typeParameters.accept(collector);
+    constantInitializer?.accept(collector);
     if (enumConstants != null) {
       for (var enumConstant in enumConstants) {
         enumConstant.metadata.accept(collector);
@@ -1329,10 +1331,10 @@
     // TODO(scheglov) Replace with some kind of double-iterating list.
     var declaration = node.parent!.parent as TopLevelVariableDeclaration;
 
-    var collector = _OffsetsCollector();
-    declaration.metadata.accept(collector);
-    node.initializer?.accept(collector);
-    sink.writeUint30List(collector.offsets);
+    _writeOffsets(
+      metadata: declaration.metadata,
+      constantInitializer: node.initializer,
+    );
   }
 
   void _writeTypeParameters(TypeParameterList? parameterList) {
@@ -1477,7 +1479,7 @@
   });
 }
 
-class _OffsetsApplier extends RecursiveAstVisitor<void> {
+class _OffsetsApplier extends _OffsetsAstVisitor {
   final _SafeListIterator<int> _iterator;
 
   _OffsetsApplier(this._iterator);
@@ -1511,165 +1513,103 @@
   }
 
   @override
-  void visitAnnotation(Annotation node) {
-    _applyToToken(node.atSign);
-    super.visitAnnotation(node);
-  }
-
-  @override
-  void visitArgumentList(ArgumentList node) {
-    _applyToToken(node.leftParenthesis);
-    _applyToToken(node.rightParenthesis);
-    super.visitArgumentList(node);
-  }
-
-  @override
-  void visitBooleanLiteral(BooleanLiteral node) {
-    _applyToToken(node.literal);
-  }
-
-  @override
-  void visitDoubleLiteral(DoubleLiteral node) {
-    _applyToToken(node.literal);
-  }
-
-  @override
-  void visitIndexExpression(IndexExpression node) {
-    _applyToToken(node.leftBracket);
-    _applyToToken(node.rightBracket);
-    super.visitIndexExpression(node);
-  }
-
-  @override
-  void visitInstanceCreationExpression(InstanceCreationExpression node) {
-    _applyToToken(node.keyword);
-    super.visitInstanceCreationExpression(node);
-  }
-
-  @override
-  void visitIntegerLiteral(IntegerLiteral node) {
-    _applyToToken(node.literal);
-  }
-
-  @override
-  void visitParenthesizedExpression(ParenthesizedExpression node) {
-    _applyToToken(node.leftParenthesis);
-    _applyToToken(node.rightParenthesis);
-    super.visitParenthesizedExpression(node);
-  }
-
-  @override
-  void visitPrefixExpression(PrefixExpression node) {
-    _applyToToken(node.operator);
-    super.visitPrefixExpression(node);
-  }
-
-  @override
-  void visitSimpleIdentifier(SimpleIdentifier node) {
-    _applyToToken(node.token);
-  }
-
-  @override
-  void visitSimpleStringLiteral(SimpleStringLiteral node) {
-    _applyToToken(node.literal);
-  }
-
-  @override
-  void visitThrowExpression(ThrowExpression node) {
-    _applyToToken(node.throwKeyword);
-    super.visitThrowExpression(node);
-  }
-
-  void _applyToToken(Token? token) {
-    if (token != null) {
-      var offset = _iterator.take();
-      if (offset != null) {
-        token.offset = offset;
-      }
+  void handleToken(Token token) {
+    var offset = _iterator.take();
+    if (offset != null) {
+      token.offset = offset;
     }
   }
 }
 
-class _OffsetsCollector extends RecursiveAstVisitor<void> {
-  final List<int> offsets = [];
+abstract class _OffsetsAstVisitor extends RecursiveAstVisitor<void> {
+  void handleToken(Token token);
 
   @override
   void visitAnnotation(Annotation node) {
-    _addToken(node.atSign);
+    _tokenOrNull(node.atSign);
     super.visitAnnotation(node);
   }
 
   @override
   void visitArgumentList(ArgumentList node) {
-    _addToken(node.leftParenthesis);
-    _addToken(node.rightParenthesis);
+    _tokenOrNull(node.leftParenthesis);
+    _tokenOrNull(node.rightParenthesis);
     super.visitArgumentList(node);
   }
 
   @override
   void visitBooleanLiteral(BooleanLiteral node) {
-    _addToken(node.literal);
+    _tokenOrNull(node.literal);
   }
 
   @override
   void visitDoubleLiteral(DoubleLiteral node) {
-    _addToken(node.literal);
+    _tokenOrNull(node.literal);
   }
 
   @override
   void visitIndexExpression(IndexExpression node) {
-    _addToken(node.leftBracket);
-    _addToken(node.rightBracket);
+    _tokenOrNull(node.leftBracket);
+    _tokenOrNull(node.rightBracket);
     super.visitIndexExpression(node);
   }
 
   @override
   void visitInstanceCreationExpression(InstanceCreationExpression node) {
-    _addToken(node.keyword);
+    _tokenOrNull(node.keyword);
     super.visitInstanceCreationExpression(node);
   }
 
   @override
   void visitIntegerLiteral(IntegerLiteral node) {
-    _addToken(node.literal);
+    _tokenOrNull(node.literal);
   }
 
   @override
   void visitParenthesizedExpression(ParenthesizedExpression node) {
-    _addToken(node.leftParenthesis);
-    _addToken(node.rightParenthesis);
+    _tokenOrNull(node.leftParenthesis);
+    _tokenOrNull(node.rightParenthesis);
     super.visitParenthesizedExpression(node);
   }
 
   @override
   void visitPrefixExpression(PrefixExpression node) {
-    _addToken(node.operator);
+    _tokenOrNull(node.operator);
     super.visitPrefixExpression(node);
   }
 
   @override
   void visitSimpleIdentifier(SimpleIdentifier node) {
-    _addToken(node.token);
+    _tokenOrNull(node.token);
   }
 
   @override
   void visitSimpleStringLiteral(SimpleStringLiteral node) {
-    _addToken(node.literal);
+    _tokenOrNull(node.literal);
   }
 
   @override
   void visitThrowExpression(ThrowExpression node) {
-    _addToken(node.throwKeyword);
+    _tokenOrNull(node.throwKeyword);
     super.visitThrowExpression(node);
   }
 
-  void _addToken(Token? token) {
+  void _tokenOrNull(Token? token) {
     if (token != null) {
-      offsets.add(token.offset);
+      handleToken(token);
     }
   }
 }
 
+class _OffsetsCollector extends _OffsetsAstVisitor {
+  final List<int> offsets = [];
+
+  @override
+  void handleToken(Token token) {
+    offsets.add(token.offset);
+  }
+}
+
 class _SafeListIterator<T> {
   final List<T> _elements;
   int _index = 0;
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index d3743df..cf757a8 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -235,7 +235,7 @@
   }
 
   test_analysisOptions_file_inPackage() async {
-    newFile('/workspace/dart/test/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile('/workspace/dart/test', content: r'''
 analyzer:
   strong-mode:
     implicit-casts: false
@@ -257,8 +257,7 @@
     implicit-casts: false
 ''');
 
-    newFile('/workspace/thid_party/dart/aaa/analysis_options.yaml',
-        content: r'''
+    newAnalysisOptionsYamlFile('/workspace/third_party/dart/aaa', content: r'''
 analyzer:
   strong-mode:
     implicit-casts: true
@@ -281,7 +280,7 @@
     implicit-casts: false
 ''');
 
-    newFile('/workspace/thid_party/dart_lang/aaa/analysis_options.yaml',
+    newAnalysisOptionsYamlFile('/workspace/third_party/dart_lang/aaa',
         content: r'''
 analyzer:
   strong-mode:
@@ -1114,14 +1113,14 @@
 
   test_reuse_incompatibleOptions_implicitCasts() async {
     newFile('/workspace/dart/aaa/BUILD', content: '');
-    newFile('/workspace/dart/aaa/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile('/workspace/dart/aaa', content: r'''
 analyzer:
   strong-mode:
     implicit-casts: false
 ''');
 
     newFile('/workspace/dart/bbb/BUILD', content: '');
-    newFile('/workspace/dart/bbb/analysis_options.yaml', content: r'''
+    newAnalysisOptionsYamlFile('/workspace/dart/bbb', content: r'''
 analyzer:
   strong-mode:
     implicit-casts: true
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
index bfbaa94..c6d8019 100644
--- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -297,8 +297,8 @@
   }
 
   void writeTestPackageAnalysisOptionsFile(AnalysisOptionsFileConfig config) {
-    newFile(
-      '$testPackageRootPath/analysis_options.yaml',
+    newAnalysisOptionsYamlFile(
+      testPackageRootPath,
       content: config.toContent(),
     );
   }
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index 59a96d7..1a369ce 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -47,11 +47,13 @@
   String expected, {
   bool withCodeRanges = false,
   bool withExportScope = false,
+  bool withNonSynthetic = false,
 }) {
   var writer = _ElementWriter(
     selfUriStr: '${library.source.uri}',
     withCodeRanges: withCodeRanges,
     withExportScope: withExportScope,
+    withNonSynthetic: withNonSynthetic,
   );
   writer.writeLibraryElement(library);
 
@@ -115,14 +117,16 @@
   final String? selfUriStr;
   final bool withCodeRanges;
   final bool withExportScope;
+  final bool withNonSynthetic;
   final StringBuffer buffer = StringBuffer();
 
   String indent = '';
 
   _ElementWriter({
     this.selfUriStr,
-    this.withCodeRanges = false,
-    this.withExportScope = false,
+    required this.withCodeRanges,
+    required this.withExportScope,
+    required this.withNonSynthetic,
   });
 
   void writeLibraryElement(LibraryElement e) {
@@ -168,6 +172,19 @@
     });
   }
 
+  void _assertNonSyntheticElementSelf(Element element) {
+    expect(element.isSynthetic, isFalse);
+    expect(element.nonSynthetic, same(element));
+  }
+
+  void _assertNonSyntheticElementSelfOr(Element element, Element ifSynthetic) {
+    if (element.isSynthetic) {
+      expect(element.nonSynthetic, same(ifSynthetic));
+    } else {
+      expect(element.nonSynthetic, same(element));
+    }
+  }
+
   /// Assert that the [accessor] of the [property] is correctly linked to
   /// the same enclosing element as the [property].
   void _assertSyntheticAccessorEnclosing(
@@ -315,6 +332,8 @@
       _writeElements('accessors', e.accessors, _writePropertyAccessorElement);
       _writeElements('methods', e.methods, _writeMethodElement);
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeCodeRange(Element e) {
@@ -371,13 +390,15 @@
 
       var redirectedConstructor = e.redirectedConstructor;
       if (redirectedConstructor != null) {
-        var printer = _createAstPrinter();
-        printer.writeElement('redirectedConstructor', redirectedConstructor);
+        _writeElementReference('redirectedConstructor', redirectedConstructor);
       }
+
+      _writeNonSyntheticElement(e);
     });
 
     expect(e.isAsynchronous, isFalse);
     expect(e.isGenerator, isFalse);
+    _assertNonSyntheticElementSelfOr(e, e.enclosingElement);
   }
 
   void _writeDocumentation(Element element) {
@@ -390,6 +411,11 @@
     }
   }
 
+  void _writeElementReference(String name, Element element) {
+    var printer = _createAstPrinter();
+    printer.writeElement(name, element);
+  }
+
   void _writeElements<T>(String name, List<T> elements, void Function(T) f) {
     if (elements.isNotEmpty) {
       _writelnWithIndent(name);
@@ -410,6 +436,8 @@
       _writeMetadata(e);
       _writeNamespaceCombinators(e.combinators);
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeExportScope(LibraryElement e) {
@@ -440,6 +468,8 @@
       _writeElements('accessors', e.accessors, _writePropertyAccessorElement);
       _writeElements('methods', e.methods, _writeMethodElement);
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeFunctionElement(FunctionElement e) {
@@ -457,6 +487,8 @@
       _writeParameterElements(e.parameters);
       _writeType(e.returnType, name: 'returnType');
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeIf(bool flag, String str) {
@@ -481,6 +513,8 @@
       _writeMetadata(e);
       _writeNamespaceCombinators(e.combinators);
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeIndentedLine(void Function() f) {
@@ -509,6 +543,7 @@
 
   void _writeMethodElement(MethodElement e) {
     _writeIndentedLine(() {
+      _writeIf(e.isSynthetic, 'synthetic ');
       _writeIf(e.isStatic, 'static ');
       _writeIf(e.isAbstract, 'abstract ');
       _writeIf(e.isExternal, 'external ');
@@ -526,7 +561,15 @@
       _writeTypeParameterElements(e.typeParameters);
       _writeParameterElements(e.parameters);
       _writeType(e.returnType, name: 'returnType');
+      _writeNonSyntheticElement(e);
     });
+
+    if (e.isSynthetic && e.enclosingElement is EnumElementImpl) {
+      expect(e.name, 'toString');
+      expect(e.nonSynthetic, same(e.enclosingElement));
+    } else {
+      _assertNonSyntheticElementSelf(e);
+    }
   }
 
   void _writeName(Element e) {
@@ -559,6 +602,12 @@
     );
   }
 
+  void _writeNonSyntheticElement(Element e) {
+    if (withNonSynthetic) {
+      _writeElementReference('nonSynthetic', e.nonSynthetic);
+    }
+  }
+
   void _writeParameterElement(ParameterElement e) {
     _writeIndentedLine(() {
       if (e.isRequiredPositional) {
@@ -588,6 +637,7 @@
       _writeTypeParameterElements(e.typeParameters);
       _writeParameterElements(e.parameters);
       _writeConstantInitializer(e);
+      _writeNonSyntheticElement(e);
     });
   }
 
@@ -618,6 +668,10 @@
       }
     }
 
+    if (!e.isSynthetic) {
+      _assertNonSyntheticElementSelf(e);
+    }
+
     _writeIndentedLine(() {
       _writeIf(e.isSynthetic, 'synthetic ');
       _writeIf(e.isStatic, 'static ');
@@ -642,6 +696,7 @@
       expect(e.typeParameters, isEmpty);
       _writeParameterElements(e.parameters);
       _writeType(e.returnType, name: 'returnType');
+      _writeNonSyntheticElement(e);
     });
   }
 
@@ -656,6 +711,8 @@
       if (e.setter != null) {
         _assertSyntheticAccessorEnclosing(e, e.setter!);
       }
+
+      _assertNonSyntheticElementSelf(e);
     }
 
     _writeIndentedLine(() {
@@ -678,6 +735,7 @@
       _writeTypeInferenceError(e);
       _writeType(e.type, name: 'type');
       _writeConstantInitializer(e);
+      _writeNonSyntheticElement(e);
     });
   }
 
@@ -731,6 +789,8 @@
         });
       }
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeTypeInferenceError(Element e) {
@@ -773,6 +833,8 @@
 
       _writeMetadata(e);
     });
+
+    _assertNonSyntheticElementSelf(e);
   }
 
   void _writeTypeParameterElements(List<TypeParameterElement> elements) {
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index 3bd6477..a48ad06 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -4617,7 +4617,7 @@
           synthetic static get ccc @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''',
         withCodeRanges: true);
@@ -9569,7 +9569,7 @@
           synthetic static get c @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     typeAliases
       functionTypeAliasBased F @50
@@ -11632,7 +11632,7 @@
           synthetic static get c @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static final vValue @23
@@ -11676,7 +11676,7 @@
           synthetic static get a @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static final vToString @17
@@ -14272,7 +14272,7 @@
           synthetic static get b @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
       enum E @19
         fields
@@ -14298,7 +14298,7 @@
           synthetic static get e @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -14546,7 +14546,7 @@
           synthetic static get v @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -14587,7 +14587,7 @@
           synthetic static get b @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -14649,7 +14649,7 @@
           synthetic static get b @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static const annotation @91
@@ -14690,7 +14690,7 @@
           synthetic static get v2 @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -14717,7 +14717,7 @@
           synthetic static get v1 @-1
             returnType: E1
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
       enum E2 @20
         fields
@@ -14735,7 +14735,7 @@
           synthetic static get v2 @-1
             returnType: E2
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -14827,7 +14827,7 @@
           synthetic static get c @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -22358,7 +22358,7 @@
           synthetic static get v @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static const a @6
@@ -22457,7 +22457,7 @@
           synthetic static get c @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -22492,7 +22492,7 @@
           synthetic static get v @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static const a @6
@@ -24013,7 +24013,7 @@
           synthetic static get e3 @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static const foo @6
@@ -24946,7 +24946,7 @@
           synthetic static get c @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
 ''');
   }
@@ -26296,6 +26296,408 @@
 ''');
   }
 
+  test_nonSynthetic_class_field() async {
+    var library = await checkLibrary(r'''
+class C {
+  int foo = 0;
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    classes
+      class C @6
+        fields
+          foo @16
+            type: int
+            nonSynthetic: self::@class::C::@field::foo
+        constructors
+          synthetic @-1
+            nonSynthetic: self::@class::C
+        accessors
+          synthetic get foo @16
+            returnType: int
+            nonSynthetic: self::@class::C::@field::foo
+          synthetic set foo @16
+            parameters
+              requiredPositional _foo @16
+                type: int
+                nonSynthetic: self::@class::C::@field::foo
+            returnType: void
+            nonSynthetic: self::@class::C::@field::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_class_getter() async {
+    var library = await checkLibrary(r'''
+class C {
+  int get foo => 0;
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    classes
+      class C @6
+        fields
+          synthetic foo @-1
+            type: int
+            nonSynthetic: self::@class::C::@getter::foo
+        constructors
+          synthetic @-1
+            nonSynthetic: self::@class::C
+        accessors
+          get foo @20
+            returnType: int
+            nonSynthetic: self::@class::C::@getter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_class_setter() async {
+    var library = await checkLibrary(r'''
+class C {
+  set foo(int value) {}
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    classes
+      class C @6
+        fields
+          synthetic foo @-1
+            type: int
+            nonSynthetic: self::@class::C::@setter::foo
+        constructors
+          synthetic @-1
+            nonSynthetic: self::@class::C
+        accessors
+          set foo @16
+            parameters
+              requiredPositional value @24
+                type: int
+                nonSynthetic: value@24
+            returnType: void
+            nonSynthetic: self::@class::C::@setter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_enum() async {
+    var library = await checkLibrary(r'''
+enum E {
+  a, b
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    enums
+      enum E @5
+        fields
+          synthetic final index @-1
+            type: int
+            nonSynthetic: self::@enum::E
+          synthetic static const values @-1
+            type: List<E>
+            nonSynthetic: self::@enum::E
+          static const a @11
+            type: E
+            nonSynthetic: self::@enum::E::@constant::a
+          static const b @14
+            type: E
+            nonSynthetic: self::@enum::E::@constant::b
+        accessors
+          synthetic get index @-1
+            returnType: int
+            nonSynthetic: self::@enum::E
+          synthetic static get values @-1
+            returnType: List<E>
+            nonSynthetic: self::@enum::E
+          synthetic static get a @-1
+            returnType: E
+            nonSynthetic: self::@enum::E::@constant::a
+          synthetic static get b @-1
+            returnType: E
+            nonSynthetic: self::@enum::E::@constant::b
+        methods
+          synthetic toString @-1
+            returnType: String
+            nonSynthetic: self::@enum::E
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_extension_getter() async {
+    var library = await checkLibrary(r'''
+extension E on int {
+  int get foo => 0;
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    extensions
+      E @10
+        extendedType: int
+        fields
+          synthetic foo @-1
+            type: int
+            nonSynthetic: self::@extension::E::@getter::foo
+        accessors
+          get foo @31
+            returnType: int
+            nonSynthetic: self::@extension::E::@getter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_extension_setter() async {
+    var library = await checkLibrary(r'''
+extension E on int {
+  set foo(int value) {}
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    extensions
+      E @10
+        extendedType: int
+        fields
+          synthetic foo @-1
+            type: int
+            nonSynthetic: self::@extension::E::@setter::foo
+        accessors
+          set foo @27
+            parameters
+              requiredPositional value @35
+                type: int
+                nonSynthetic: value@35
+            returnType: void
+            nonSynthetic: self::@extension::E::@setter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_mixin_field() async {
+    var library = await checkLibrary(r'''
+mixin M {
+  int foo = 0;
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    mixins
+      mixin M @6
+        superclassConstraints
+          Object
+        fields
+          foo @16
+            type: int
+            nonSynthetic: self::@mixin::M::@field::foo
+        constructors
+          synthetic @-1
+            nonSynthetic: self::@mixin::M
+        accessors
+          synthetic get foo @16
+            returnType: int
+            nonSynthetic: self::@mixin::M::@field::foo
+          synthetic set foo @16
+            parameters
+              requiredPositional _foo @16
+                type: int
+                nonSynthetic: self::@mixin::M::@field::foo
+            returnType: void
+            nonSynthetic: self::@mixin::M::@field::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_mixin_getter() async {
+    var library = await checkLibrary(r'''
+mixin M {
+  int get foo => 0;
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    mixins
+      mixin M @6
+        superclassConstraints
+          Object
+        fields
+          synthetic foo @-1
+            type: int
+            nonSynthetic: self::@mixin::M::@getter::foo
+        constructors
+          synthetic @-1
+            nonSynthetic: self::@mixin::M
+        accessors
+          get foo @20
+            returnType: int
+            nonSynthetic: self::@mixin::M::@getter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_mixin_setter() async {
+    var library = await checkLibrary(r'''
+mixin M {
+  set foo(int value) {}
+}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    mixins
+      mixin M @6
+        superclassConstraints
+          Object
+        fields
+          synthetic foo @-1
+            type: int
+            nonSynthetic: self::@mixin::M::@setter::foo
+        constructors
+          synthetic @-1
+            nonSynthetic: self::@mixin::M
+        accessors
+          set foo @16
+            parameters
+              requiredPositional value @24
+                type: int
+                nonSynthetic: value@24
+            returnType: void
+            nonSynthetic: self::@mixin::M::@setter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_unit_getter() async {
+    var library = await checkLibrary(r'''
+int get foo => 0;
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    topLevelVariables
+      synthetic static foo @-1
+        type: int
+        nonSynthetic: self::@getter::foo
+    accessors
+      get foo @8
+        returnType: int
+        nonSynthetic: self::@getter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_unit_getterSetter() async {
+    var library = await checkLibrary(r'''
+int get foo => 0;
+set foo(int value) {}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    topLevelVariables
+      synthetic static foo @-1
+        type: int
+        nonSynthetic: self::@getter::foo
+    accessors
+      get foo @8
+        returnType: int
+        nonSynthetic: self::@getter::foo
+      set foo @22
+        parameters
+          requiredPositional value @30
+            type: int
+            nonSynthetic: value@30
+        returnType: void
+        nonSynthetic: self::@setter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_unit_setter() async {
+    var library = await checkLibrary(r'''
+set foo(int value) {}
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    topLevelVariables
+      synthetic static foo @-1
+        type: int
+        nonSynthetic: self::@setter::foo
+    accessors
+      set foo @4
+        parameters
+          requiredPositional value @12
+            type: int
+            nonSynthetic: value@12
+        returnType: void
+        nonSynthetic: self::@setter::foo
+''',
+        withNonSynthetic: true);
+  }
+
+  test_nonSynthetic_unit_variable() async {
+    var library = await checkLibrary(r'''
+int foo = 0;
+''');
+    checkElementText(
+        library,
+        r'''
+library
+  definingUnit
+    topLevelVariables
+      static foo @4
+        type: int
+        nonSynthetic: self::@variable::foo
+    accessors
+      synthetic static get foo @4
+        returnType: int
+        nonSynthetic: self::@variable::foo
+      synthetic static set foo @4
+        parameters
+          requiredPositional _foo @4
+            type: int
+            nonSynthetic: self::@variable::foo
+        returnType: void
+        nonSynthetic: self::@variable::foo
+''',
+        withNonSynthetic: true);
+  }
+
   test_old_typedef_notSimplyBounded_self() async {
     var library = await checkLibrary('''
 typedef void F<T extends F>();
@@ -28325,7 +28727,7 @@
           synthetic static get v @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     typeAliases
       functionTypeAliasBased F @32
@@ -28431,7 +28833,7 @@
             synthetic static get v @-1
               returnType: E
           methods
-            toString @-1
+            synthetic toString @-1
               returnType: String
       typeAliases
         functionTypeAliasBased F @43
@@ -28471,7 +28873,7 @@
           synthetic static get v @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     typeAliases
       functionTypeAliasBased F @58
@@ -28548,7 +28950,7 @@
             synthetic static get v @-1
               returnType: E
           methods
-            toString @-1
+            synthetic toString @-1
               returnType: String
       typeAliases
         functionTypeAliasBased F @43
@@ -28623,7 +29025,7 @@
             synthetic static get v @-1
               returnType: E
           methods
-            toString @-1
+            synthetic toString @-1
               returnType: String
       typeAliases
         functionTypeAliasBased F @43
@@ -28766,7 +29168,7 @@
           synthetic static get v @-1
             returnType: E
         methods
-          toString @-1
+          synthetic toString @-1
             returnType: String
     topLevelVariables
       static e @15
diff --git a/pkg/dev_compiler/lib/src/compiler/shared_command.dart b/pkg/dev_compiler/lib/src/compiler/shared_command.dart
index cf67f91..c0a9c24 100644
--- a/pkg/dev_compiler/lib/src/compiler/shared_command.dart
+++ b/pkg/dev_compiler/lib/src/compiler/shared_command.dart
@@ -92,6 +92,13 @@
   /// the browser.
   final bool emitDebugMetadata;
 
+  /// Whether to emit the debug symbols
+  ///
+  /// Debugger uses this information about to construct mapping between
+  /// dart and js objecys that otherwise requires expensive communication with
+  /// the browser.
+  final bool emitDebugSymbols;
+
   final Map<String, String> summaryModules;
 
   final List<ModuleFormat> moduleFormats;
@@ -123,6 +130,7 @@
       this.enableAsserts = true,
       this.replCompile = false,
       this.emitDebugMetadata = false,
+      this.emitDebugSymbols = false,
       this.emitFullCompiledKernel = false,
       this.summaryModules = const {},
       this.moduleFormats = const [],
@@ -140,6 +148,7 @@
             enableAsserts: args['enable-asserts'] as bool,
             replCompile: args['repl-compile'] as bool,
             emitDebugMetadata: args['experimental-emit-debug-metadata'] as bool,
+            emitDebugSymbols: args['emit-debug-symbols'] as bool,
             emitFullCompiledKernel:
                 args['experimental-output-compiled-kernel'] as bool,
             summaryModules:
@@ -195,6 +204,11 @@
               'Output a metadata file for debug tools next to the .js output.',
           defaultsTo: false,
           hide: true)
+      ..addFlag('emit-debug-symbols',
+          help: 'Experimental option for compiler development.\n'
+              'Output a symbols file for debug tools next to the .js output.',
+          defaultsTo: false,
+          hide: true)
       ..addFlag('experimental-output-compiled-kernel',
           help: 'Experimental option for compiler development.\n'
               'Output a full kernel file for currently compiled module next to '
diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart
index 8ddd4dc..2bac27d 100644
--- a/pkg/dev_compiler/lib/src/kernel/command.dart
+++ b/pkg/dev_compiler/lib/src/kernel/command.dart
@@ -11,6 +11,7 @@
 import 'package:args/args.dart';
 import 'package:build_integration/file_system/multi_root.dart';
 import 'package:cli_util/cli_util.dart' show getSdkPath;
+import 'package:dev_compiler/src/kernel/module_symbols.dart';
 import 'package:front_end/src/api_unstable/ddc.dart' as fe;
 import 'package:kernel/binary/ast_to_binary.dart' as kernel show BinaryPrinter;
 import 'package:kernel/class_hierarchy.dart';
@@ -443,11 +444,13 @@
         buildSourceMap: options.sourceMap,
         inlineSourceMap: options.inlineSourceMap,
         emitDebugMetadata: options.emitDebugMetadata,
+        emitDebugSymbols: options.emitDebugSymbols,
         jsUrl: p.toUri(output).toString(),
         mapUrl: mapUrl,
         fullDillUri: fullDillUri,
         customScheme: options.multiRootScheme,
         multiRootOutputPath: multiRootOutputPath,
+        compiler: compiler,
         component: compiledLibraries);
 
     outFiles.add(file.writeAsString(jsCode.code));
@@ -459,6 +462,11 @@
       outFiles.add(
           File('$output.metadata').writeAsString(json.encode(jsCode.metadata)));
     }
+
+    if (jsCode.symbols != null) {
+      outFiles.add(
+          File('$output.symbols').writeAsString(json.encode(jsCode.symbols)));
+    }
   }
 
   if (recordUsedInputs) {
@@ -635,7 +643,13 @@
   /// see: https://goto.google.com/dart-web-debugger-metadata
   final ModuleMetadata metadata;
 
-  JSCode(this.code, this.sourceMap, {this.metadata});
+  /// Module debug symbols.
+  ///
+  /// The [symbols] is a contract between compiler and the debugger,
+  /// helping the debugger map between dart and JS objects.
+  final ModuleSymbols symbols;
+
+  JSCode(this.code, this.sourceMap, {this.symbols, this.metadata});
 }
 
 /// Converts [moduleTree] to [JSCode], using [format].
@@ -646,12 +660,14 @@
     {bool buildSourceMap = false,
     bool inlineSourceMap = false,
     bool emitDebugMetadata = false,
+    bool emitDebugSymbols = false,
     String jsUrl,
     String mapUrl,
     String fullDillUri,
     String sourceMapBase,
     String customScheme,
     String multiRootOutputPath,
+    ProgramCompiler compiler,
     Component component}) {
   var opts = js_ast.JavaScriptPrintingOptions(
       allowKeywordsInProperties: true, allowSingleLineIfStatements: true);
@@ -666,8 +682,8 @@
   }
 
   var tree = transformModuleFormat(format, moduleTree);
-  tree.accept(
-      js_ast.Printer(opts, printer, localNamer: js_ast.TemporaryNamer(tree)));
+  var namer = js_ast.TemporaryNamer(tree);
+  tree.accept(js_ast.Printer(opts, printer, localNamer: namer));
 
   Map builtMap;
   if (buildSourceMap && sourceMap != null) {
@@ -710,7 +726,15 @@
       ? _emitMetadata(moduleTree, component, mapUrl, jsUrl, fullDillUri)
       : null;
 
-  return JSCode(text, builtMap, metadata: debugMetadata);
+  var debugSymbols =
+      emitDebugSymbols ? _emitSymbols(compiler, component) : null;
+
+  return JSCode(text, builtMap, symbols: debugSymbols, metadata: debugMetadata);
+}
+
+ModuleSymbols _emitSymbols(ProgramCompiler compiler, Component component) {
+  // TODO(annagrin): collect module symbols.
+  return ModuleSymbols();
 }
 
 ModuleMetadata _emitMetadata(js_ast.Program program, Component component,
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart
index 7f79898..7300029 100644
--- a/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart
@@ -152,8 +152,10 @@
       inlineSourceMap: true,
       buildSourceMap: true,
       emitDebugMetadata: true,
+      emitDebugSymbols: true,
       jsUrl: '$output',
       mapUrl: '$output.map',
+      compiler: kernel2jsCompiler,
       component: component,
     );
     metadata = code.metadata;
diff --git a/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart
index 8cda5d8..7141bb4 100644
--- a/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart
+++ b/pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_test.dart
@@ -769,6 +769,7 @@
       config.testModule3.jsPath.toFilePath(),
       '--source-map',
       '--experimental-emit-debug-metadata',
+      '--emit-debug-symbols',
       '--experimental-output-compiled-kernel',
       '--dart-sdk-summary',
       config.sdkSummaryPath.path,
@@ -797,6 +798,7 @@
       config.testModule2.jsPath.toFilePath(),
       '--source-map',
       '--experimental-emit-debug-metadata',
+      '--emit-debug-symbols',
       '--experimental-output-compiled-kernel',
       '--dart-sdk-summary',
       config.sdkSummaryPath.path,
@@ -827,6 +829,7 @@
       config.testModule.jsPath.toFilePath(),
       '--source-map',
       '--experimental-emit-debug-metadata',
+      '--emit-debug-symbols',
       '--experimental-output-compiled-kernel',
       '--dart-sdk-summary',
       config.sdkSummaryPath.path,
@@ -859,6 +862,7 @@
       config.mainModule.jsPath.toFilePath(),
       '--source-map',
       '--experimental-emit-debug-metadata',
+      '--emit-debug-symbols',
       '--experimental-output-compiled-kernel',
       '--dart-sdk-summary',
       config.sdkSummaryPath.path,
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
index 769d43f..adcb97b 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -66,15 +66,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
   return :controller_stream;
 }
 static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
index c7560fa..4e5d4b5 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
@@ -46,7 +46,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -100,4 +100,4 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///deferred_explicit_access.dart:12:31 -> IntConstant(0)
 Evaluated: VariableGet @ org-dartlang-testcase:///deferred_explicit_access.dart:12:45 -> IntConstant(42)
 Evaluated: VariableGet @ org-dartlang-testcase:///deferred_explicit_access.dart:12:45 -> IntConstant(42)
-Extra constant evaluation: evaluated: 93, effectively constant: 3
+Extra constant evaluation: evaluated: 92, effectively constant: 3
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
index 86a95a1..299f5f6 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
@@ -37,7 +37,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect
index 2a42c83..295921a 100644
--- a/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect
@@ -30,7 +30,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -57,7 +57,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -117,16 +117,16 @@
       try {
         #L3:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}("foo"))
+          if(:controller.{asy::_AsyncStarStreamController::add}("foo"){(core::String*) → core::bool})
             return null;
           else
             [yield] null;
-          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::asyncStarString2()))
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::asyncStarString2()){(asy::Stream<core::String*>) → core::bool})
             return null;
           else
             [yield] null;
           [yield] let dynamic #t1 = asy::_awaitHelper(self::asyncString(), :async_op_then, :async_op_error, :async_op) in null;
-          if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::String*>(:result)))
+          if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::String*>(:result)){(core::String*) → core::bool})
             return null;
           else
             [yield] null;
@@ -134,15 +134,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::String*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::String*>};
   return :controller_stream;
 }
 static method asyncStarString2() → asy::Stream<core::String*>* /* originally async* */ {
@@ -159,7 +159,7 @@
       try {
         #L4:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}("bar"))
+          if(:controller.{asy::_AsyncStarStreamController::add}("bar"){(core::String*) → core::bool})
             return null;
           else
             [yield] null;
@@ -167,15 +167,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::String*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::String*>};
   return :controller_stream;
 }
 static method main() → dynamic /* originally async */ {
@@ -202,7 +202,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
index fc34d1a..c05a8b5 100644
--- a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
index 8b7a059..45a2ff8 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
@@ -70,7 +70,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/await.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await.dart.weak.transformed.expect
index 04a6af0..6107389 100644
--- a/pkg/front_end/testcases/general/await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await.dart.weak.transformed.expect
@@ -28,7 +28,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
index 42aed06..cb5a62a 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
@@ -108,7 +108,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -159,7 +159,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -211,7 +211,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -263,7 +263,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -287,12 +287,12 @@
       {
         core::bool* a = false;
         core::bool* b = true;
-        :async_temporary_0 = (a || b).==(true);
+        :async_temporary_0 = (a || b) =={core::Object::==}{(core::Object) → core::bool} true;
         if(:async_temporary_0)
           ;
         else {
           [yield] let dynamic #t22 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error, :async_op) in null;
-          :async_temporary_0 = (:result as{TypeError,ForDynamic} core::bool*).==(true);
+          :async_temporary_0 = :result as{TypeError,ForDynamic} core::bool* =={core::Object::==}{(core::Object) → core::bool} true;
         }
         core::bool* c = :async_temporary_0;
         self::expect(true, c);
@@ -335,7 +335,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -354,9 +354,9 @@
       #L6:
       {
         {
-          core::Iterator<core::Function*>* :sync-for-iterator = core::_GrowableList::_literal2<core::Function*>(#C1, #C2).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final core::Function* #t26 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::Function*>* :sync-for-iterator = core::_GrowableList::_literal2<core::Function*>(#C1, #C2).{core::Iterable::iterator}{core::Iterator<core::Function*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final core::Function* #t26 = :sync-for-iterator.{core::Iterator::current}{core::Function*};
             {
               final <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>* func = #t26 as{TypeError} <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>*;
               assert {
@@ -408,7 +408,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -433,9 +433,9 @@
       #L7:
       {
         {
-          core::Iterator<core::Function*>* :sync-for-iterator = core::_GrowableList::_literal2<core::Function*>(#C1, #C2).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final core::Function* #t33 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::Function*>* :sync-for-iterator = core::_GrowableList::_literal2<core::Function*>(#C1, #C2).{core::Iterable::iterator}{core::Iterator<core::Function*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final core::Function* #t33 = :sync-for-iterator.{core::Iterator::current}{core::Function*};
             {
               final <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>* func = #t33 as{TypeError} <T extends core::Object* = dynamic>(T*) →* FutureOr<T*>*;
               core::int* c = 0;
@@ -570,7 +570,7 @@
                   }
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
                 :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-                :async_op.call();
+                :async_op(){() →* dynamic};
                 :is_sync = true;
                 return :async_future;
               })(){() →* asy::Future<dynamic>*}, :async_op_then, :async_op_error, :async_op) in null;
@@ -598,7 +598,7 @@
                   }
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
                 :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-                :async_op.call();
+                :async_op(){() →* dynamic};
                 :is_sync = true;
                 return :async_future;
               })(){() →* asy::Future<dynamic>*}, :async_op_then, :async_op_error, :async_op) in null;
@@ -618,7 +618,7 @@
                       #L15:
                       {
                         [yield] let dynamic #t54 = asy::_awaitHelper(func<core::int*>(42){(core::int*) →* FutureOr<core::int*>*}, :async_op_then, :async_op_error, :async_op) in null;
-                        if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::int*>(:result)))
+                        if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::int*>(:result)){(core::int*) → core::bool})
                           return null;
                         else
                           [yield] null;
@@ -626,15 +626,15 @@
                       return;
                     }
                     on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
                     }
                   finally {
-                    :controller.{asy::_AsyncStarStreamController::close}();
+                    :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
                   }
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
                 :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
                 :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
-                :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+                :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
                 return :controller_stream;
               }
               :async_temporary_0 = core::_GrowableList::_literal1<dynamic>(42);
@@ -655,7 +655,7 @@
                       #L16:
                       {
                         [yield] let dynamic #t56 = asy::_awaitHelper(func<asy::Stream<core::int*>*>(self::intStream()){(asy::Stream<core::int*>*) →* FutureOr<asy::Stream<core::int*>*>*}, :async_op_then, :async_op_error, :async_op) in null;
-                        if(:controller.{asy::_AsyncStarStreamController::addStream}(_in::unsafeCast<asy::Stream<core::int*>*>(:result)))
+                        if(:controller.{asy::_AsyncStarStreamController::addStream}(_in::unsafeCast<asy::Stream<core::int*>*>(:result)){(asy::Stream<core::int*>) → core::bool})
                           return null;
                         else
                           [yield] null;
@@ -663,15 +663,15 @@
                       return;
                     }
                     on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                      :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
                     }
                   finally {
-                    :controller.{asy::_AsyncStarStreamController::close}();
+                    :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
                   }
                 :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
                 :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
                 :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
-                :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+                :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
                 return :controller_stream;
               }
               :async_temporary_1 = core::_GrowableList::_literal1<dynamic>(42);
@@ -689,7 +689,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -716,7 +716,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -736,7 +736,7 @@
       try {
         #L18:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(42))
+          if(:controller.{asy::_AsyncStarStreamController::add}(42){(core::int*) → core::bool})
             return null;
           else
             [yield] null;
@@ -744,15 +744,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
   return :controller_stream;
 }
 static method main() → dynamic /* originally async */ {
@@ -793,7 +793,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
index 744e8a3..0372529 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -64,7 +64,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -103,7 +103,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
index 1121533..3d71e92 100644
--- a/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
index 36aee3f..7178e45 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
@@ -63,7 +63,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -92,7 +92,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -128,7 +128,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -156,7 +156,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
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 fd3b4a6..0a550d4 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
@@ -32,7 +32,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect
index da68741..f427951 100644
--- a/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection.dart.weak.transformed.expect
@@ -16,16 +16,16 @@
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
         #t1.{core::List::add}(4){(core::int*) →* void};
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         #t1.{core::List::add}(i){(core::int*) →* void};
       }
     }
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(8, 9, 10).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(8, 9, 10).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         if(self::oracle() as{TypeError,ForDynamic} core::bool*)
           #t1.{core::List::add}(i){(core::int*) →* void};
       }
@@ -46,16 +46,16 @@
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
         #t2.{core::Set::add}(4){(core::int*) →* core::bool*};
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
       }
     }
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(8, 9, 10).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(8, 9, 10).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         if(self::oracle() as{TypeError,ForDynamic} core::bool*)
           #t2.{core::Set::add}(i){(core::int*) →* core::bool*};
       }
@@ -76,16 +76,16 @@
       if(self::oracle() as{TypeError,ForDynamic} core::bool*)
         #t3.{core::Map::[]=}(4, 4){(core::int*, core::int*) →* void};
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(5, 6, 7).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
       }
     }
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(8, 9, 10).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(8, 9, 10).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         if(self::oracle() as{TypeError,ForDynamic} core::bool*)
           #t3.{core::Map::[]=}(i, i){(core::int*, core::int*) →* void};
       }
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
index d0aa370..36c13cd 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
@@ -517,9 +517,9 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t12 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}{core::String*}, #t13.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -539,9 +539,9 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t16 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, dynamic>* #t17 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, dynamic>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, dynamic>* #t17 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, dynamic>};
         #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}{core::String*}, #t17.{core::MapEntry::value}{dynamic}){(core::String*, dynamic) →* void};
       }
     }
@@ -561,9 +561,9 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t20 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::List<core::int*>*>* #t21 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::List<core::int*>*>* #t21 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
         #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}{core::String*}, #t21.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
       }
     }
@@ -586,9 +586,9 @@
     final core::Map<core::String*, core::int*>* #t24 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::int*>* #t25 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::int*>* #t25 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
           #t24.{core::Map::[]=}(#t25.{core::MapEntry::key}{core::String*}, #t25.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
         }
       }
@@ -611,9 +611,9 @@
     final core::Map<core::String*, dynamic>* #t28 = <core::String*, dynamic>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, dynamic>* #t29 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, dynamic>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, dynamic>* #t29 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, dynamic>};
           #t28.{core::Map::[]=}(#t29.{core::MapEntry::key}{core::String*}, #t29.{core::MapEntry::value}{dynamic}){(core::String*, dynamic) →* void};
         }
       }
@@ -636,9 +636,9 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t32 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
           #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}{core::String*}, #t33.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
         }
       }
@@ -692,9 +692,9 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t42 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::List<core::int*>*>* #t43 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
           #t42.{core::Map::[]=}(#t43.{core::MapEntry::key}{core::String*}, #t43.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
         }
       }
@@ -714,9 +714,9 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t46 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t47 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t47 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t46.{core::Map::[]=}(#t47.{core::MapEntry::key}{core::String*}, #t47.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -754,9 +754,9 @@
     final core::Map<core::String*, core::int*>* #t54 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::int*>* #t55 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::int*>* #t55 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
           #t54.{core::Map::[]=}(#t55.{core::MapEntry::key}{core::String*}, #t55.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
         }
       }
@@ -776,9 +776,9 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t58 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::List<core::int*>*>* #t59 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::List<core::int*>*>* #t59 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
         #t58.{core::Map::[]=}(#t59.{core::MapEntry::key}{core::String*}, #t59.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
       }
     }
@@ -801,9 +801,9 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t62 = <core::String*, core::List<core::int*>*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*)
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::List<core::int*>*>* #t63 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
           #t62.{core::Map::[]=}(#t63.{core::MapEntry::key}{core::String*}, #t63.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
         }
       }
@@ -874,16 +874,16 @@
   core::Map<core::String*, core::num*>* map81 = block {
     final core::Map<core::String*, core::num*>* #t73 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapToInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::num*>* #t74 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapToInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::num*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::num*>* #t74 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::num*>};
         #t73.{core::Map::[]=}(#t74.{core::MapEntry::key}{core::String*}, #t74.{core::MapEntry::value}{core::num*}){(core::String*, core::num*) →* void};
       }
     }
     else {
-      core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapToDouble.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::num*>* #t75 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapToDouble.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::num*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::num*>* #t75 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::num*>};
         #t73.{core::Map::[]=}(#t75.{core::MapEntry::key}{core::String*}, #t75.{core::MapEntry::value}{core::num*}){(core::String*, core::num*) →* void};
       }
     }
@@ -933,9 +933,9 @@
   core::Map<core::String*, core::num*>* map83 = block {
     final core::Map<core::String*, core::num*>* #t81 = <core::String*, core::num*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapToInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::num*>* #t82 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapToInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::num*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::num*>* #t82 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::num*>};
         #t81.{core::Map::[]=}(#t82.{core::MapEntry::key}{core::String*}, #t82.{core::MapEntry::value}{core::num*}){(core::String*, core::num*) →* void};
       }
     }
@@ -963,9 +963,9 @@
   core::List<core::int*>* list91 = block {
     final core::List<core::int*>* #t86 = core::_GrowableList::•<core::int*>(0);
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t87 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t87 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t88 = #t87 as{TypeError} core::int*;
           #t86.{core::List::add}(#t88){(core::int*) →* void};
@@ -976,9 +976,9 @@
   core::Set<core::int*>* set91 = block {
     final core::Set<core::int*>* #t89 = new col::_CompactLinkedHashSet::•<core::int*>();
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t90 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t90 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t91 = #t90 as{TypeError} core::int*;
           #t89.{core::Set::add}(#t91){(core::int*) →* core::bool*};
@@ -990,9 +990,9 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t92 = <core::String*, core::int*>{};
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t93 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t93 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         {
           final core::String* #t94 = #t93.{core::MapEntry::key}{dynamic} as{TypeError} core::String*;
           final core::int* #t95 = #t93.{core::MapEntry::value}{dynamic} as{TypeError} core::int*;
@@ -1062,9 +1062,9 @@
     if(self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*) {
       core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": let final Never* #t110 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:92:47: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <String, int>{if (oracle(\"foo\")) ...{\"bar\": \"bar\"}, \"baz\": null};
-                                              ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t111 = :sync-for-iterator.{core::Iterator::current};
+                                              ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t111 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t109.{core::Map::[]=}(#t111.{core::MapEntry::key}{core::String*}, #t111.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -1335,9 +1335,9 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t156 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t157 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t157 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t156.{core::Map::[]=}(#t157.{core::MapEntry::key}{core::String*}, #t157.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -1357,9 +1357,9 @@
   core::Map<core::String*, dynamic>* map21 = block {
     final core::Map<core::String*, dynamic>* #t160 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, dynamic>* #t161 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, dynamic>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, dynamic>* #t161 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, dynamic>};
         #t160.{core::Map::[]=}(#t161.{core::MapEntry::key}{core::String*}, #t161.{core::MapEntry::value}{dynamic}){(core::String*, dynamic) →* void};
       }
     }
@@ -1379,9 +1379,9 @@
   core::Map<core::String*, core::List<core::int*>*>* map22 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t164 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::List<core::int*>*>* #t165 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::List<core::int*>*>* #t165 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
         #t164.{core::Map::[]=}(#t165.{core::MapEntry::key}{core::String*}, #t165.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
       }
     }
@@ -1404,9 +1404,9 @@
     final core::Map<core::String*, core::int*>* #t168 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::int*>* #t169 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{"bar": 42}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::int*>* #t169 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
           #t168.{core::Map::[]=}(#t169.{core::MapEntry::key}{core::String*}, #t169.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
         }
       }
@@ -1429,9 +1429,9 @@
     final core::Map<core::String*, dynamic>* #t172 = <core::String*, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, dynamic>* #t173 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, dynamic>>* :sync-for-iterator = <core::String*, dynamic>{"bar": dynVar}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, dynamic>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, dynamic>* #t173 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, dynamic>};
           #t172.{core::Map::[]=}(#t173.{core::MapEntry::key}{core::String*}, #t173.{core::MapEntry::value}{dynamic}){(core::String*, dynamic) →* void};
         }
       }
@@ -1454,9 +1454,9 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t176 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::List<core::int*>*>* #t177 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::_literal1<core::int*>(42)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::List<core::int*>*>* #t177 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
           #t176.{core::Map::[]=}(#t177.{core::MapEntry::key}{core::String*}, #t177.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
         }
       }
@@ -1476,9 +1476,9 @@
   core::Map<core::String*, core::List<core::int*>*>* map40 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t180 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::List<core::int*>*>* #t181 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::List<core::int*>*>* #t181 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
         #t180.{core::Map::[]=}(#t181.{core::MapEntry::key}{core::String*}, #t181.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
       }
     }
@@ -1518,9 +1518,9 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t188 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::List<core::int*>*>* #t189 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::List<core::int*>*>* #t189 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
           #t188.{core::Map::[]=}(#t189.{core::MapEntry::key}{core::String*}, #t189.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
         }
       }
@@ -1540,9 +1540,9 @@
   core::Map<core::String*, core::int*>* map50 = block {
     final core::Map<core::String*, core::int*>* #t192 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t193 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t193 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t192.{core::Map::[]=}(#t193.{core::MapEntry::key}{core::String*}, #t193.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -1590,9 +1590,9 @@
   core::Map<core::String*, core::List<core::int*>*>* map60 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t202 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::List<core::int*>*>* #t203 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::List<core::int*>*>* #t203 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
         #t202.{core::Map::[]=}(#t203.{core::MapEntry::key}{core::String*}, #t203.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
       }
     }
@@ -1615,9 +1615,9 @@
     final core::Map<core::String*, core::List<core::int*>*>* #t206 = <core::String*, core::List<core::int*>*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::List<core::int*>*>* #t207 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"bar": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::List<core::int*>*>* #t207 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
           #t206.{core::Map::[]=}(#t207.{core::MapEntry::key}{core::String*}, #t207.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
         }
       }
@@ -1707,16 +1707,16 @@
     final core::Map<core::String*, core::num*>* #t219 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::num*>* #t220 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::num*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::num*>* #t220 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::num*>};
           #t219.{core::Map::[]=}(#t220.{core::MapEntry::key}{core::String*}, #t220.{core::MapEntry::value}{core::num*}){(core::String*, core::num*) →* void};
         }
       }
       else {
-        core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapStringDouble.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::num*>* #t221 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapStringDouble.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::num*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::num*>* #t221 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::num*>};
           #t219.{core::Map::[]=}(#t221.{core::MapEntry::key}{core::String*}, #t221.{core::MapEntry::value}{core::num*}){(core::String*, core::num*) →* void};
         }
       }
@@ -1743,16 +1743,16 @@
     final core::Map<dynamic, dynamic>* #t224 = <dynamic, dynamic>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = mapStringInt.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<dynamic, dynamic>* #t225 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = mapStringInt.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<dynamic, dynamic>* #t225 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
           #t224.{core::Map::[]=}(#t225.{core::MapEntry::key}{dynamic}, #t225.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
         }
       }
       else {
-        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<dynamic, dynamic>* #t226 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<dynamic, dynamic>* #t226 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
           #t224.{core::Map::[]=}(#t226.{core::MapEntry::key}{dynamic}, #t226.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
         }
       }
@@ -1779,9 +1779,9 @@
     final core::Map<core::String*, core::num*>* #t229 = <core::String*, core::num*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
       if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*) {
-        core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::String*, core::num*>* #t230 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::String*, core::num*>>* :sync-for-iterator = mapStringInt.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::num*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::num*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::String*, core::num*>* #t230 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::num*>};
           #t229.{core::Map::[]=}(#t230.{core::MapEntry::key}{core::String*}, #t230.{core::MapEntry::value}{core::num*}){(core::String*, core::num*) →* void};
         }
       }
@@ -1809,9 +1809,9 @@
   core::List<core::int*>* list91 = block {
     final core::List<core::int*>* #t234 = core::_GrowableList::•<core::int*>(0);
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t235 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t235 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t236 = #t235 as{TypeError} core::int*;
           #t234.{core::List::add}(#t236){(core::int*) →* void};
@@ -1822,9 +1822,9 @@
   core::Set<core::int*>* set91 = block {
     final core::Set<core::int*>* #t237 = new col::_CompactLinkedHashSet::•<core::int*>();
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t238 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t238 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t239 = #t238 as{TypeError} core::int*;
           #t237.{core::Set::add}(#t239){(core::int*) →* core::bool*};
@@ -1836,9 +1836,9 @@
   core::Map<core::String*, core::int*>* map91 = block {
     final core::Map<core::String*, core::int*>* #t240 = <core::String*, core::int*>{};
     for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t241 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t241 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         {
           final core::String* #t242 = #t241.{core::MapEntry::key}{dynamic} as{TypeError} core::String*;
           final core::int* #t243 = #t241.{core::MapEntry::value}{dynamic} as{TypeError} core::int*;
@@ -1866,9 +1866,9 @@
   core::List<core::int*>* list110 = block {
     final core::List<core::int*>* #t250 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         #t250.{core::List::add}(i){(core::int*) →* void};
       }
     }
@@ -1876,9 +1876,9 @@
   core::Set<core::int*>* set110 = block {
     final core::Set<core::int*>* #t251 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         #t251.{core::Set::add}(i){(core::int*) →* core::bool*};
       }
     }
@@ -1887,9 +1887,9 @@
   core::Map<core::String*, core::int*>* map110 = block {
     final core::Map<core::String*, core::int*>* #t252 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
         #t252.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
       }
     }
@@ -1898,9 +1898,9 @@
   core::List<core::int*>* list120 = block {
     final core::List<core::int*>* #t253 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic i = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t253.{core::List::add}(i as{TypeError,ForDynamic} core::int*){(core::int*) →* void};
       }
     }
@@ -1908,9 +1908,9 @@
   core::Set<core::int*>* set120 = block {
     final core::Set<core::int*>* #t254 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic i = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t254.{core::Set::add}(i as{TypeError,ForDynamic} core::int*){(core::int*) →* core::bool*};
       }
     }
@@ -1919,9 +1919,9 @@
   core::Map<core::String*, core::int*>* map120 = block {
     final core::Map<core::String*, core::int*>* #t255 = <core::String*, core::int*>{};
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic i = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t255.{core::Map::[]=}("bar", i as{TypeError,ForDynamic} core::int*){(core::String*, core::int*) →* void};
       }
     }
@@ -2008,9 +2008,9 @@
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
                                                      ^" in "bar" as{TypeError} core::int*: let final Never* #t273 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   <int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
-                                                            ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::MapEntry<core::int*, core::int*>* #t274 = :sync-for-iterator.{core::Iterator::current};
+                                                            ^" in "bar" as{TypeError} core::int*}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::MapEntry<core::int*, core::int*>* #t274 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
               #t271.{core::Map::[]=}(#t274.{core::MapEntry::key}{core::int*}, #t274.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
             }
           }
@@ -2144,9 +2144,9 @@
         block {
           final core::List<core::int*>* #t291 = core::_GrowableList::•<core::int*>(0);
           {
-            core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::int* #t292 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::int* #t292 = :sync-for-iterator.{core::Iterator::current}{core::int*};
               {
                 invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:230:14: Error: Can't assign to the final variable 'i'.
   <int>[for (i in <int>[1]) i];
@@ -2159,9 +2159,9 @@
         block {
           final core::Set<core::int*>* #t293 = new col::_CompactLinkedHashSet::•<core::int*>();
           {
-            core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::int* #t294 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::int* #t294 = :sync-for-iterator.{core::Iterator::current}{core::int*};
               {
                 invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:231:14: Error: Can't assign to the final variable 'i'.
   <int>{for (i in <int>[1]) i, null};
@@ -2175,9 +2175,9 @@
         block {
           final core::Map<core::String*, core::int*>* #t295 = <core::String*, core::int*>{};
           {
-            core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::int* #t296 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::int* #t296 = :sync-for-iterator.{core::Iterator::current}{core::int*};
               {
                 invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:232:21: Error: Can't assign to the final variable 'i'.
 \t<String, int>{for (i in <int>[1]) \"bar\": i, \"baz\": null};
@@ -2194,9 +2194,9 @@
             core::Iterator<dynamic>* :sync-for-iterator = (let final Never* #t298 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:234:31: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Iterable' is from 'dart:core'.
   var list10 = [for (var i in \"not iterable\") i];
-                              ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              dynamic i = :sync-for-iterator.{core::Iterator::current};
+                              ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              dynamic i = :sync-for-iterator.{core::Iterator::current}{dynamic};
               #t297.{core::List::add}(i){(dynamic) →* void};
             }
           }
@@ -2207,9 +2207,9 @@
             core::Iterator<dynamic>* :sync-for-iterator = (let final Never* #t300 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:235:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Iterable' is from 'dart:core'.
   var set10 = {for (var i in \"not iterable\") i, null};
-                             ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              dynamic i = :sync-for-iterator.{core::Iterator::current};
+                             ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              dynamic i = :sync-for-iterator.{core::Iterator::current}{dynamic};
               #t299.{core::Set::add}(i){(dynamic) →* core::bool*};
             }
           }
@@ -2221,9 +2221,9 @@
             core::Iterator<dynamic>* :sync-for-iterator = (let final Never* #t302 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:236:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Iterable' is from 'dart:core'.
   var map10 = {for (var i in \"not iterable\") \"bar\": i, \"baz\": null};
-                             ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              dynamic i = :sync-for-iterator.{core::Iterator::current};
+                             ^" in "not iterable" as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              dynamic i = :sync-for-iterator.{core::Iterator::current}{dynamic};
               #t301.{core::Map::[]=}("bar", i){(core::String*, dynamic) →* void};
             }
           }
@@ -2236,9 +2236,9 @@
   var list20 = [for (int i in [\"not\", \"int\"]) i];
                                ^" in "not" as{TypeError} core::int*, let final Never* #t305 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:237:39: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var list20 = [for (int i in [\"not\", \"int\"]) i];
-                                      ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              core::int* i = :sync-for-iterator.{core::Iterator::current};
+                                      ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
               #t303.{core::List::add}(i){(core::int*) →* void};
             }
           }
@@ -2250,9 +2250,9 @@
   var set20 = {for (int i in [\"not\", \"int\"]) i, null};
                               ^" in "not" as{TypeError} core::int*, let final Never* #t308 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:238:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var set20 = {for (int i in [\"not\", \"int\"]) i, null};
-                                     ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              core::int* i = :sync-for-iterator.{core::Iterator::current};
+                                     ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
               #t306.{core::Set::add}(i){(core::int*) →* core::bool*};
             }
           }
@@ -2265,9 +2265,9 @@
   var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
                               ^" in "not" as{TypeError} core::int*, let final Never* #t311 = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:239:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
   var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
-                                     ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              core::int* i = :sync-for-iterator.{core::Iterator::current};
+                                     ^" in "int" as{TypeError} core::int*).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
               #t309.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
             }
           }
@@ -2284,17 +2284,17 @@
             #L2:
             while (true) {
               dynamic #t314 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t315 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t315 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic i = :for-iterator.{asy::_StreamIterator::current};
+                dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 #t312.{core::List::add}(i){(dynamic) →* void};
               }
               else
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t316 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t316 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -2310,17 +2310,17 @@
             #L3:
             while (true) {
               dynamic #t319 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t320 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t320 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic i = :for-iterator.{asy::_StreamIterator::current};
+                dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 #t317.{core::Set::add}(i){(dynamic) →* core::bool*};
               }
               else
                 break #L3;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t321 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t321 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -2338,17 +2338,17 @@
             #L4:
             while (true) {
               dynamic #t324 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t325 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t325 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic i = :for-iterator.{asy::_StreamIterator::current};
+                dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 #t322.{core::Map::[]=}("bar", i){(core::String*, dynamic) →* void};
               }
               else
                 break #L4;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t326 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t326 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -2367,17 +2367,17 @@
             #L5:
             while (true) {
               dynamic #t330 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t331 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t331 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::int* i = :for-iterator.{asy::_StreamIterator::current};
+                core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
                 #t327.{core::List::add}(i){(core::int*) →* void};
               }
               else
                 break #L5;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t332 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
+              [yield] let dynamic #t332 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -2394,17 +2394,17 @@
             #L6:
             while (true) {
               dynamic #t336 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t337 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t337 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::int* i = :for-iterator.{asy::_StreamIterator::current};
+                core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
                 #t333.{core::Set::add}(i){(core::int*) →* core::bool*};
               }
               else
                 break #L6;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t338 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
+              [yield] let dynamic #t338 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -2423,17 +2423,17 @@
             #L7:
             while (true) {
               dynamic #t342 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t343 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t343 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::int* i = :for-iterator.{asy::_StreamIterator::current};
+                core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
                 #t339.{core::Map::[]=}("bar", i){(core::String*, core::int*) →* void};
               }
               else
                 break #L7;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t344 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
+              [yield] let dynamic #t344 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -2489,7 +2489,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect
index ab1141b..9b308ef 100644
--- a/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect
@@ -41,9 +41,9 @@
             #L2:
             while (true) {
               dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t3 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t3 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   invalid-expression "pkg/front_end/testcases/general/error_recovery/empty_await_for.dart:3:14: Error: This couldn't be parsed.
   await for () {}
@@ -54,8 +54,8 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -68,7 +68,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/error_recovery/for_in_with_colon.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/for_in_with_colon.dart.weak.transformed.expect
index 1e157c0..32ce646 100644
--- a/pkg/front_end/testcases/general/error_recovery/for_in_with_colon.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/for_in_with_colon.dart.weak.transformed.expect
@@ -12,9 +12,9 @@
 
 static method main() → dynamic {
   {
-    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int* i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
       {
         core::print(i);
       }
diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
index add51d0..c0bd1b7 100644
--- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -154,7 +154,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -223,7 +223,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/general/for_in_scope.dart.weak.transformed.expect b/pkg/front_end/testcases/general/for_in_scope.dart.weak.transformed.expect
index ae6b6e7..9107472 100644
--- a/pkg/front_end/testcases/general/for_in_scope.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/for_in_scope.dart.weak.transformed.expect
@@ -4,9 +4,9 @@
 
 static method main(core::List<core::String*>* arguments) → dynamic {
   {
-    core::Iterator<core::String*>* :sync-for-iterator = arguments.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String* arguments = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String*>* :sync-for-iterator = arguments.{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String* arguments = :sync-for-iterator.{core::Iterator::current}{core::String*};
       {
         core::print(arguments);
       }
diff --git a/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect b/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect
index 2e09441..7825f8f 100644
--- a/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/for_in_without_declaration.dart.weak.transformed.expect
@@ -98,90 +98,90 @@
     core::String* local;
     dynamic untypedLocal;
     {
-      core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::•<core::String*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::String* #t1 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::•<core::String*>(0).{core::Iterable::iterator}{core::Iterator<core::String*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::String* #t1 = :sync-for-iterator.{core::Iterator::current}{core::String*};
         {
           local = #t1;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           untypedLocal = #t2;
         }
       }
     }
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::int* #t3 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::int* #t3 = :sync-for-iterator.{core::Iterator::current}{core::int*};
         {
           this.{self::C::instanceField} = #t3;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           this.{self::C::untypedInstanceField} = #t4;
         }
       }
     }
     {
-      core::Iterator<core::double*>* :sync-for-iterator = core::_GrowableList::•<core::double*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::double* #t5 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::double*>* :sync-for-iterator = core::_GrowableList::•<core::double*>(0).{core::Iterable::iterator}{core::Iterator<core::double*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::double* #t5 = :sync-for-iterator.{core::Iterator::current}{core::double*};
         {
           self::C::staticField = #t5;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::C::untypedStaticField = #t6;
         }
       }
     }
     {
-      core::Iterator<core::bool*>* :sync-for-iterator = core::_GrowableList::•<core::bool*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::bool* #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::bool*>* :sync-for-iterator = core::_GrowableList::•<core::bool*>(0).{core::Iterable::iterator}{core::Iterator<core::bool*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::bool* #t7 = :sync-for-iterator.{core::Iterator::current}{core::bool*};
         {
           self::topLevelField = #t7;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::untypedTopLevelField = #t8;
         }
       }
     }
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::int* #t9 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::int* #t9 = :sync-for-iterator.{core::Iterator::current}{core::int*};
         {
           super.{self::Super::superInstanceField} = #t9;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           super.{self::Super::untypedSuperInstanceField} = #t10;
         }
@@ -189,27 +189,27 @@
     }
     self::C* c = new self::C::•();
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::int* #t11 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::int* #t11 = :sync-for-iterator.{core::Iterator::current}{core::int*};
         {
           c.{self::C::instanceField} = #t11;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           c.{self::Super::untypedSuperInstanceField} = #t12;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t13 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t13 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:37:10: Error: The setter 'unresolved' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/for_in_without_declaration.dart'.
@@ -220,9 +220,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t14 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t14 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:38:10: Error: The getter 'unresolved' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/for_in_without_declaration.dart'.
@@ -233,9 +233,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:39:12: Error: The setter 'unresolved' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/for_in_without_declaration.dart'.
@@ -250,9 +250,9 @@
     for (main() in []) {}
          ^^^^";
       {
-        core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t16 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:40:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (main() in []) {}
@@ -267,9 +267,9 @@
     for (var x, y in <int>[]) {
          ^^^";
       {
-        core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::int* #t17 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::int* #t17 = :sync-for-iterator.{core::Iterator::current}{core::int*};
           {
             invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:41:10: Error: A for-in loop can't have more than one loop variable.
     for (var x, y in <int>[]) {
@@ -283,9 +283,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/general/for_in_without_declaration.dart:46:10: Error: Can't assign to the const variable 'constant'.
     for (constant in []) {}
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
index b322b55..e61e567 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
@@ -50,7 +50,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -93,7 +93,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect b/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect
index 059106c..d6d5aa0 100644
--- a/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect
@@ -65,7 +65,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -92,7 +92,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -119,7 +119,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -146,7 +146,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -173,7 +173,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -200,7 +200,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -227,7 +227,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -254,7 +254,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -281,7 +281,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -308,7 +308,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -335,7 +335,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -362,7 +362,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -412,7 +412,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/invalid_for_in_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/general/invalid_for_in_iterable.dart.weak.transformed.expect
index 927eae0..cf9dd5c 100644
--- a/pkg/front_end/testcases/general/invalid_for_in_iterable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/invalid_for_in_iterable.dart.weak.transformed.expect
@@ -36,18 +36,18 @@
     core::Iterator<dynamic>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/invalid_for_in_iterable.dart:14:27: Error: Too many positional arguments: 0 allowed, but 1 found.
 Try removing the extra positional arguments.
   for (var v in takesNoArg(0)) {}
-                          ^".{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic v = :sync-for-iterator.{core::Iterator::current};
+                          ^".{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic v = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {}
     }
   }
   {
     core::Iterator<invalid-type>* :sync-for-iterator = (let final Never* #t1 = invalid-expression "pkg/front_end/testcases/general/invalid_for_in_iterable.dart:15:17: Error: This expression has type 'void' and can't be used.
   for (var v in returnVoid()) {}
-                ^" in self::returnVoid()).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic v = :sync-for-iterator.{core::Iterator::current};
+                ^" in self::returnVoid()).{core::Iterable::iterator}{core::Iterator<invalid-type>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic v = :sync-for-iterator.{core::Iterator::current}{invalid-type};
       {}
     }
   }
@@ -55,30 +55,30 @@
     core::Iterator<dynamic>* :sync-for-iterator = (let final Never* #t2 = invalid-expression "pkg/front_end/testcases/general/invalid_for_in_iterable.dart:16:17: Error: The type 'int' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Iterable' is from 'dart:core'.
   for (var v in returnInt()) {}
-                ^" in self::returnInt() as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic v = :sync-for-iterator.{core::Iterator::current};
+                ^" in self::returnInt() as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic v = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {}
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (self::returnDynamic() as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic v = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (self::returnDynamic() as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic v = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {}
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (self::returnObject() as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic v = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (self::returnObject() as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic v = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {}
     }
   }
   {
-    core::Iterator<Never*>* :sync-for-iterator = (throw "").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic v = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<Never*>* :sync-for-iterator = (throw "").{core::Iterable::iterator}{core::Iterator<Never*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic v = :sync-for-iterator.{core::Iterator::current}{Never*};
       {}
     }
   }
diff --git a/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect
index 29b2a47..e32389f 100644
--- a/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37027.dart.weak.transformed.expect
@@ -9,9 +9,9 @@
     : self::C::s = block {
       final core::Set<core::int> #t1 = new col::_CompactLinkedHashSet::•<core::int>();
       {
-        core::Iterator<core::int> :sync-for-iterator = ell.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          core::int e = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::int> :sync-for-iterator = ell.{core::Iterable::iterator}{core::Iterator<core::int>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          core::int e = :sync-for-iterator.{core::Iterator::current}{core::int};
           if(e.{core::int::isOdd}{core::bool})
             #t1.{core::Set::add}(2.{core::num::*}(e){(core::num) → core::int}){(core::int) → core::bool};
         }
diff --git a/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect
index 74a5ad5..6f29e79 100644
--- a/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect
@@ -53,7 +53,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect
index 34a47d3..193bfdf 100644
--- a/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect
@@ -44,7 +44,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -78,7 +78,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -108,7 +108,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 };
diff --git a/pkg/front_end/testcases/general/issue39817.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue39817.dart.weak.transformed.expect
index 5dfdb2c..c552909 100644
--- a/pkg/front_end/testcases/general/issue39817.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue39817.dart.weak.transformed.expect
@@ -5,9 +5,9 @@
 static method foo() → dynamic {
   Null _null;
   {
-    core::Iterator<invalid-type>* :sync-for-iterator = _null.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<invalid-type>* :sync-for-iterator = _null.{core::Iterable::iterator}{core::Iterator<invalid-type>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic i = :sync-for-iterator.{core::Iterator::current}{invalid-type};
       {}
     }
   }
diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
index c811d62..b5dfa01 100644
--- a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -75,7 +75,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -88,4 +88,4 @@
 Extra constant evaluation status:
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:8:10 -> IntConstant(-1)
 Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:9:10 -> IntConstant(-1)
-Extra constant evaluation: evaluated: 95, effectively constant: 2
+Extra constant evaluation: evaluated: 93, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect
index 3144af6..b0ac024 100644
--- a/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   });
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
index be2cc3e..5ef478d 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
@@ -33,7 +33,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
index dede444..eef17d5 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
@@ -21,9 +21,9 @@
   dynamic o;
   if(false) {
     {
-      core::Iterator<dynamic>* :sync-for-iterator = ((let final dynamic #t1 = o in #t1 == null ?{dynamic} null : #t1{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = ((let final dynamic #t1 = o in #t1 == null ?{dynamic} null : #t1{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::Class* c = #t2 as{TypeError,ForDynamic} self::Class*;
         }
diff --git a/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect
index 137401e..a1389b2 100644
--- a/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_spread.dart.weak.transformed.expect
@@ -26,9 +26,9 @@
     #t5.{core::Map::[]=}(0, "foo"){(core::int*, core::String*) →* void};
     final core::Map<core::int*, core::String*>* #t6 = map;
     if(!(#t6 == null)) {
-      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = #t6.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int*, core::String*>* #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = #t6.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::String*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int*, core::String*>* #t7 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::String*>};
         #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}{core::int*}, #t7.{core::MapEntry::value}{core::String*}){(core::int*, core::String*) →* void};
       }
     }
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
index 90952fd..23aa402 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
@@ -28,7 +28,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -113,7 +113,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
index 048552b..b25f44b 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
@@ -23,17 +23,17 @@
     final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
     #t3.{core::Map::[]=}(1, 1){(core::int*, core::int*) →* void};
     {
-      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int*, core::int*>* #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int*, core::int*>* #t4 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
         #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}{core::int*}, #t4.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
       }
     }
     final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{3: 3};
     if(!(#t5 == null)) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t5.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t5.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
         #t3.{core::Map::[]=}(#t6.{core::MapEntry::key}{core::int*}, #t6.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
       }
     }
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
index 11d244a..82b8b77 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
@@ -114,9 +114,9 @@
   core::Map<dynamic, dynamic>* map10 = block {
     final core::Map<dynamic, dynamic>* #t3 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}{dynamic}, #t4.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
       }
     }
@@ -124,9 +124,9 @@
   core::Map<dynamic, dynamic>* map10ambiguous = block {
     final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}{dynamic}, #t6.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
       }
     }
@@ -141,9 +141,9 @@
   core::Set<core::int*>* set20ambiguous = block {
     final core::Set<core::int*>* #t9 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<core::int*>* :sync-for-iterator = spread.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = spread.{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{core::int*};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
@@ -154,9 +154,9 @@
   core::Map<core::String*, core::int*>* map20 = block {
     final core::Map<core::String*, core::int*>* #t12 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}{core::String*}, #t13.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -165,9 +165,9 @@
   core::Map<core::String*, core::int*>* map20ambiguous = block {
     final core::Map<core::String*, core::int*>* #t14 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t15 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t15 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}{core::String*}, #t15.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -182,9 +182,9 @@
   core::Map<dynamic, dynamic>* map21 = block {
     final core::Map<dynamic, dynamic>* #t18 = <dynamic, dynamic>{};
     {
-      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t19 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = ((mapSpread as dynamic) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t19 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
       }
     }
@@ -204,9 +204,9 @@
   core::Set<core::int*>* set22ambiguous = block {
     final core::Set<core::int*>* #t22 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::•<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current}{core::int*};
         {
           final core::int* #t24 = #t23 as{TypeError} core::int*;
           #t22.{core::Set::add}(#t24){(core::int*) →* core::bool*};
@@ -217,9 +217,9 @@
   core::Map<core::String*, core::int*>* map22 = block {
     final core::Map<core::String*, core::int*>* #t25 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t26 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = <core::String*, core::int*>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t26 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t25.{core::Map::[]=}(#t26.{core::MapEntry::key}{core::String*}, #t26.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -234,9 +234,9 @@
   core::Set<core::List<core::int*>*>* set23ambiguous = block {
     final core::Set<core::List<core::int*>*>* #t29 = new col::_CompactLinkedHashSet::•<core::List<core::int*>*>();
     {
-      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t30 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::List<core::int*>*>* :sync-for-iterator = core::_GrowableList::_literal1<core::List<core::int*>*>(core::_GrowableList::•<core::int*>(0)).{core::Iterable::iterator}{core::Iterator<core::List<core::int*>*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t30 = :sync-for-iterator.{core::Iterator::current}{core::List<core::int*>*};
         {
           final core::List<core::int*>* #t31 = #t30 as{TypeError} core::List<core::int*>*;
           #t29.{core::Set::add}(#t31){(core::List<core::int*>*) →* core::bool*};
@@ -247,9 +247,9 @@
   core::Map<core::String*, core::List<core::int*>*>* map23 = block {
     final core::Map<core::String*, core::List<core::int*>*>* #t32 = <core::String*, core::List<core::int*>*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>* :sync-for-iterator = <core::String*, core::List<core::int*>*>{"baz": core::_GrowableList::•<core::int*>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::List<core::int*>*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::List<core::int*>*>};
         #t32.{core::Map::[]=}(#t33.{core::MapEntry::key}{core::String*}, #t33.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
       }
     }
@@ -276,9 +276,9 @@
       ^" in ( block {
     final core::Set<core::int*>* #t39 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<core::int*>* :sync-for-iterator = spread.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t40 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int*>* :sync-for-iterator = spread.{core::Iterable::iterator}{core::Iterator<core::int*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t40 = :sync-for-iterator.{core::Iterator::current}{core::int*};
         {
           final core::int* #t41 = #t40 as{TypeError} core::int*;
           #t39.{core::Set::add}(#t41){(core::int*) →* core::bool*};
@@ -292,9 +292,9 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t43 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t44 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t44 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t43.{core::Map::[]=}(#t44.{core::MapEntry::key}{core::String*}, #t44.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -306,9 +306,9 @@
       ^" in ( block {
     final core::Map<core::String*, core::int*>* #t46 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t47 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t47 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t46.{core::Map::[]=}(#t47.{core::MapEntry::key}{core::String*}, #t47.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -367,9 +367,9 @@
     ...null,
        ^"){(dynamic) →* core::bool*};
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t53 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t53 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final dynamic #t54 = #t53 as{TypeError} dynamic;
           #t52.{core::Set::add}(#t54){(dynamic) →* core::bool*};
@@ -396,9 +396,9 @@
     final core::Set<dynamic>* #t59 = new col::_CompactLinkedHashSet::•<dynamic>();
     final core::Iterable<dynamic>* #t60 = null;
     if(!(#t60 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t60.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t61 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t60.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t61 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final dynamic #t62 = #t61 as{TypeError} dynamic;
           #t59.{core::Set::add}(#t62){(dynamic) →* core::bool*};
@@ -406,9 +406,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t63 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t63 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final dynamic #t64 = #t63 as{TypeError} dynamic;
           #t59.{core::Set::add}(#t64){(dynamic) →* core::bool*};
@@ -420,9 +420,9 @@
     final core::Map<core::String*, core::int*>* #t65 = <core::String*, core::int*>{};
     final core::Map<core::String*, core::int*>* #t66 = null;
     if(!(#t66 == null)) {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = #t66.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t67 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = #t66.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t67 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t65.{core::Map::[]=}(#t67.{core::MapEntry::key}{core::String*}, #t67.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -430,9 +430,9 @@
   core::Map<core::String*, core::int*>* map90 = block {
     final core::Map<core::String*, core::int*>* #t68 = <core::String*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String*, core::int*>* #t69 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String*, core::int*>>* :sync-for-iterator = self::bar<core::String*, core::int*>().{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String*, core::int*>* #t69 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String*, core::int*>};
         #t68.{core::Map::[]=}(#t69.{core::MapEntry::key}{core::String*}, #t69.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
       }
     }
@@ -440,9 +440,9 @@
   core::List<core::int*>* list100 = block {
     final core::List<core::int*>* #t70 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<core::num*>* :sync-for-iterator = listNum.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t71 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = listNum.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t71 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t72 = #t71 as{TypeError} core::int*;
           #t70.{core::List::add}(#t72){(core::int*) →* void};
@@ -453,9 +453,9 @@
   core::Map<core::num*, core::int*>* map100 = block {
     final core::Map<core::num*, core::int*>* #t73 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::num*, core::int*>>* :sync-for-iterator = mapIntNum.{core::Map::entries}{core::Iterable<core::MapEntry<core::num*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t74 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::num*, core::int*>>* :sync-for-iterator = mapIntNum.{core::Map::entries}{core::Iterable<core::MapEntry<core::num*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::num*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t74 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::num*, core::int*>};
         {
           final core::num* #t75 = #t74.{core::MapEntry::key}{dynamic} as{TypeError} core::num*;
           final core::int* #t76 = #t74.{core::MapEntry::value}{dynamic} as{TypeError} core::int*;
@@ -467,9 +467,9 @@
   core::List<core::int*>* list110 = block {
     final core::List<core::int*>* #t77 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t78 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t78 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t79 = #t78 as{TypeError} core::int*;
           #t77.{core::List::add}(#t79){(core::int*) →* void};
@@ -480,9 +480,9 @@
   core::Map<core::num*, core::int*>* map110 = block {
     final core::Map<core::num*, core::int*>* #t80 = <core::num*, core::int*>{};
     {
-      core::Iterator<core::MapEntry<core::num*, core::int*>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::num*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t81 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::num*, core::int*>>* :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::num*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::num*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t81 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::num*, core::int*>};
         {
           final core::num* #t82 = #t81.{core::MapEntry::key}{dynamic} as{TypeError} core::num*;
           final core::int* #t83 = #t81.{core::MapEntry::value}{dynamic} as{TypeError} core::int*;
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
index e0b0a7c..df43e6d 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
@@ -36,15 +36,15 @@
               #L2:
               while (true) {
                 dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
-                [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
                 if(_in::unsafeCast<core::bool>(:result)) {
-                  dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                  dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                   {
-                    if(:controller.{asy::_AsyncStarStreamController::add}(x))
+                    if(:controller.{asy::_AsyncStarStreamController::add}(x){(dynamic) → core::bool})
                       return null;
                     else
                       [yield] null;
-                    if(:controller.{asy::_AsyncStarStreamController::addStream}(x as{TypeError,ForDynamic} asy::Stream<dynamic>*))
+                    if(:controller.{asy::_AsyncStarStreamController::addStream}(x as{TypeError,ForDynamic} asy::Stream<dynamic>*){(asy::Stream<dynamic>) → core::bool})
                       return null;
                     else
                       [yield] null;
@@ -54,8 +54,8 @@
                   break #L2;
               }
             finally
-              if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-                [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+                [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
                 :result;
               }
           }
@@ -63,15 +63,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
   return :controller_stream;
 }
 static method main() → dynamic {
@@ -84,26 +84,26 @@
   }
   while (false)
   {
-    core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::_literal1<core::String*>("Hello from for-in!").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String* s = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::_literal1<core::String*>("Hello from for-in!").{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String* s = :sync-for-iterator.{core::Iterator::current}{core::String*};
       {
         core::print(s);
       }
     }
   }
   {
-    core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::_literal1<core::String*>("Hello from for-in without block!").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String* s = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::_literal1<core::String*>("Hello from for-in without block!").{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String* s = :sync-for-iterator.{core::Iterator::current}{core::String*};
       core::print(s);
     }
   }
   dynamic s;
   {
-    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl!").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl!").{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         s = #t4;
         core::print(s);
@@ -111,9 +111,9 @@
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl and block!").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl and block!").{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         s = #t5;
         core::print(s);
diff --git a/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect b/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
index 454713b..ae0443b 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -84,7 +84,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -106,7 +106,7 @@
  - 'Future' is from 'dart:async'.
  - 'Class' is from 'pkg/front_end/testcases/general/stream_future.dart'.
   yield returnFutureDynamic();
-        ^" in self::returnFutureDynamic() as{TypeError} FutureOr<self::Class*>*))
+        ^" in self::returnFutureDynamic() as{TypeError} FutureOr<self::Class*>*){(FutureOr<self::Class*>*) → core::bool})
             return null;
           else
             [yield] null;
@@ -114,15 +114,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class*>*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class*>*>};
   return :controller_stream;
 }
 static method stream() → asy::Stream<FutureOr<self::Class*>*>* /* originally async* */ {
@@ -139,15 +139,15 @@
       try {
         #L4:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnDynamic() as{TypeError,ForDynamic} FutureOr<self::Class*>*))
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnDynamic() as{TypeError,ForDynamic} FutureOr<self::Class*>*){(FutureOr<self::Class*>*) → core::bool})
             return null;
           else
             [yield] null;
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnClass()))
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnClass()){(FutureOr<self::Class*>*) → core::bool})
             return null;
           else
             [yield] null;
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnFutureClass()))
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnFutureClass()){(FutureOr<self::Class*>*) → core::bool})
             return null;
           else
             [yield] null;
@@ -155,15 +155,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class*>*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class*>*>};
   return :controller_stream;
 }
 static method main() → dynamic /* originally async */ {
@@ -189,9 +189,9 @@
             #L6:
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                FutureOr<self::Class*>* cls = :for-iterator.{asy::_StreamIterator::current};
+                FutureOr<self::Class*>* cls = :for-iterator.{asy::_StreamIterator::current}{FutureOr<self::Class*>*};
                 {
                   core::print(cls);
                 }
@@ -200,8 +200,8 @@
                 break #L6;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<FutureOr<self::Class*>*>?} == null)) {
+              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -214,7 +214,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect
index 97bf72f..dceb836 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.1.expect
@@ -215,9 +215,9 @@
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       dart.core::int i = this.{dart.core::List::length}{dart.core::int};
       {
-        dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
-        for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-          dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+        dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator}{dart.core::Iterator<dart.core::int*>};
+        for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) {
+          dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int*};
           {
             assert(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} i || (throw new dart.core::ConcurrentModificationError::•(this)));
             this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
@@ -383,9 +383,9 @@
         if(end =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
           dart.core::int i = start;
           {
-            dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator};
-            for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-              dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+            dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator}{dart.core::Iterator<dart.core::int*>};
+            for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) {
+              dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int*};
               {
                 if(i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}) {
                   this.{dart.core::List::[]=}(i, element){(dart.core::int, dart.core::int*) → void};
@@ -499,9 +499,9 @@
       }
       else {
         {
-          dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
-          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-            dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator}{dart.core::Iterator<dart.core::int*>};
+          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) {
+            dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int*};
             {
               this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t7, element){(dart.core::int, dart.core::int*) → void};
             }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect
index 97bf72f..dceb836 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_22.yaml.world.2.expect
@@ -215,9 +215,9 @@
     method /*isNonNullableByDefault, from org-dartlang-sdk:///sdk/lib/collection/list.dart */ addAll(generic-covariant-impl dart.core::Iterable<dart.core::int*> iterable) → void {
       dart.core::int i = this.{dart.core::List::length}{dart.core::int};
       {
-        dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
-        for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-          dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+        dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator}{dart.core::Iterator<dart.core::int*>};
+        for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) {
+          dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int*};
           {
             assert(this.{dart.core::List::length}{dart.core::int} =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} i || (throw new dart.core::ConcurrentModificationError::•(this)));
             this.{dart.collection::ListMixin::add}(element){(dart.core::int*) → void};
@@ -383,9 +383,9 @@
         if(end =={dart.core::num::==}{(dart.core::Object) → dart.core::bool} this.{dart.core::List::length}{dart.core::int}) {
           dart.core::int i = start;
           {
-            dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator};
-            for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-              dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+            dart.core::Iterator<dart.core::int*> :sync-for-iterator = newContents.{dart.core::Iterable::iterator}{dart.core::Iterator<dart.core::int*>};
+            for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) {
+              dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int*};
               {
                 if(i.{dart.core::num::<}(end){(dart.core::num) → dart.core::bool}) {
                   this.{dart.core::List::[]=}(i, element){(dart.core::int, dart.core::int*) → void};
@@ -499,9 +499,9 @@
       }
       else {
         {
-          dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator};
-          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(); ) {
-            dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current};
+          dart.core::Iterator<dart.core::int*> :sync-for-iterator = iterable.{dart.core::Iterable::iterator}{dart.core::Iterator<dart.core::int*>};
+          for (; :sync-for-iterator.{dart.core::Iterator::moveNext}(){() → dart.core::bool}; ) {
+            dart.core::int* element = :sync-for-iterator.{dart.core::Iterator::current}{dart.core::int*};
             {
               this.{dart.core::List::[]=}(let final dart.core::int #t7 = index in let final dart.core::int #t8 = index = #t7.{dart.core::num::+}(1){(dart.core::num) → dart.core::int} in #t7, element){(dart.core::int, dart.core::int*) → void};
             }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
index e2cb288..e955e1e 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
@@ -27,7 +27,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -78,7 +78,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
index 6ef77a2..4f65073 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
@@ -27,7 +27,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -79,7 +79,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
index 824f20e..5d54f1b 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
@@ -44,7 +44,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -74,7 +74,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
index 44652d1..d857553 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
@@ -44,7 +44,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -74,7 +74,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
index 99415d4..8da36e7 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
@@ -45,7 +45,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -75,7 +75,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect
index d56811d..d27df25 100644
--- a/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect
@@ -72,7 +72,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -99,7 +99,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -126,7 +126,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -153,7 +153,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -180,7 +180,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -207,7 +207,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -234,7 +234,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -261,7 +261,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -288,7 +288,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -315,7 +315,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -348,7 +348,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect
index 3a8bfa5c7..faa27c6 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect
@@ -30,7 +30,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 };
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect
index 8e77c75..02f5546 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect
@@ -26,7 +26,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 };
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect
index b678b0d..516b135 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect
@@ -30,7 +30,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 };
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
index 1f47c71..ab84cab 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   };
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
index 95a5eab..946c0ba 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   };
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
index 1ce4583..35febb4 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   };
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
index 097e9a3..6e67dc6 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
@@ -20,12 +20,12 @@
         try {
           #L1:
           {
-            if(:controller.{asy::_AsyncStarStreamController::add}(1))
+            if(:controller.{asy::_AsyncStarStreamController::add}(1){(core::num*) → core::bool})
               return null;
             else
               [yield] null;
             asy::Stream<core::double*>* s;
-            if(:controller.{asy::_AsyncStarStreamController::addStream}(s))
+            if(:controller.{asy::_AsyncStarStreamController::addStream}(s){(asy::Stream<core::num*>) → core::bool})
               return null;
             else
               [yield] null;
@@ -33,15 +33,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<core::num*>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::num*>};
     return :controller_stream;
   };
   asy::Stream<core::num*>* g = f(){() →* asy::Stream<core::num*>*};
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
index 1c8b19c..2f681c5 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
@@ -42,7 +42,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -59,7 +59,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
index 236bc34..fbf4bc7 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
               try {
                 #L2:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::add}(null))
+                  if(:controller.{asy::_AsyncStarStreamController::add}(null){(Null) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -41,15 +41,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<Null>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<Null>};
           return :controller_stream;
         };
         asy::Stream<dynamic>* y = f(){() →* asy::Stream<Null>*};
@@ -65,7 +65,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect
index 3ae57113..03d1390 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_annotations_for_loop_variable.dart.weak.transformed.expect
@@ -21,9 +21,9 @@
   for (@#C1 core::int* i = 0; i.{core::num::<}(1){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
   }
   {
-    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      @#C1 core::int* i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(0).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      @#C1 core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
       {}
     }
   }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect
index 3c726ad..0b4c6aa 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect
index 7754fb8..58aee22 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect
@@ -78,39 +78,39 @@
         dynamic d;
         core::Object* o;
         {
-          core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            dynamic x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {}
           }
         }
         {
-          core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            dynamic x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {}
           }
         }
         {
-          core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            core::Object* x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator}{core::Iterator<core::Object*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            core::Object* x = :sync-for-iterator.{core::Iterator::current}{core::Object*};
             {}
           }
         }
         {
-          core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {
               d = #t1;
             }
           }
         }
         {
-          core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final core::Object* #t2 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator}{core::Iterator<core::Object*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final core::Object* #t2 = :sync-for-iterator.{core::Iterator::current}{core::Object*};
             {
               o = #t2;
             }
@@ -123,17 +123,17 @@
             #L2:
             while (true) {
               dynamic #t3 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {}
               }
               else
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -144,17 +144,17 @@
             #L3:
             while (true) {
               dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {}
               }
               else
                 break #L3;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -165,17 +165,17 @@
             #L4:
             while (true) {
               dynamic #t9 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::Object* x = :for-iterator.{asy::_StreamIterator::current};
+                core::Object* x = :for-iterator.{asy::_StreamIterator::current}{core::Object*};
                 {}
               }
               else
                 break #L4;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t11 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::Object*>?} == null)) {
+              [yield] let dynamic #t11 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -186,9 +186,9 @@
             #L5:
             while (true) {
               dynamic #t12 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t13 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t13 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t14 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t14 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   d = #t14;
                 }
@@ -197,8 +197,8 @@
                 break #L5;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -209,9 +209,9 @@
             #L6:
             while (true) {
               dynamic #t16 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final core::Object* #t18 = :for-iterator.{asy::_StreamIterator::current};
+                final core::Object* #t18 = :for-iterator.{asy::_StreamIterator::current}{core::Object*};
                 {
                   o = #t18;
                 }
@@ -220,8 +220,8 @@
                 break #L6;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t19 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::Object*>?} == null)) {
+              [yield] let dynamic #t19 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -234,7 +234,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -255,23 +255,23 @@
       #L7:
       {
         {
-          core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            core::int* x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            core::int* x = :sync-for-iterator.{core::Iterator::current}{core::int*};
             {}
           }
         }
         {
-          core::Iterator<core::num*>* :sync-for-iterator = core::_GrowableList::_literal3<core::num*>(1, 2, 3).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            core::num* x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::num*>* :sync-for-iterator = core::_GrowableList::_literal3<core::num*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::num*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            core::num* x = :sync-for-iterator.{core::Iterator::current}{core::num*};
             {}
           }
         }
         {
-          core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            core::int* x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            core::int* x = :sync-for-iterator.{core::Iterator::current}{core::int*};
             {}
           }
         }
@@ -282,17 +282,17 @@
             #L8:
             while (true) {
               dynamic #t20 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t21 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t21 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::int* x = :for-iterator.{asy::_StreamIterator::current};
+                core::int* x = :for-iterator.{asy::_StreamIterator::current}{core::int*};
                 {}
               }
               else
                 break #L8;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
+              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -303,17 +303,17 @@
             #L9:
             while (true) {
               dynamic #t23 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::int* x = :for-iterator.{asy::_StreamIterator::current};
+                core::int* x = :for-iterator.{asy::_StreamIterator::current}{core::int*};
                 {}
               }
               else
                 break #L9;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t25 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
+              [yield] let dynamic #t25 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -326,7 +326,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect
index 9af4727..0a1fd1f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect
@@ -97,7 +97,7 @@
       try {
         #L1:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(core::_GrowableList::•<core::int*>(0)))
+          if(:controller.{asy::_AsyncStarStreamController::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) → core::bool})
             return null;
           else
             [yield] null;
@@ -105,7 +105,7 @@
  - 'MyStream' is from 'pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart'.
  - 'List' is from 'dart:core'.
   yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@ typeArgs=dynamic */ MyStream();
-                                                                    ^" in self::MyStream::•<dynamic>() as{TypeError} core::List<core::int*>*))
+                                                                    ^" in self::MyStream::•<dynamic>() as{TypeError} core::List<core::int*>*){(core::List<core::int*>*) → core::bool})
             return null;
           else
             [yield] null;
@@ -113,11 +113,11 @@
  - 'List' is from 'dart:core'.
  - 'Stream' is from 'dart:async'.
   yield* /*error:YIELD_OF_INVALID_TYPE*/ /*@typeArgs=dynamic*/ [];
-                                                               ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} asy::Stream<core::List<core::int*>*>*))
+                                                               ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} asy::Stream<core::List<core::int*>*>*){(asy::Stream<core::List<core::int*>*>) → core::bool})
             return null;
           else
             [yield] null;
-          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::MyStream::•<core::List<core::int*>*>()))
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::MyStream::•<core::List<core::int*>*>()){(asy::Stream<core::List<core::int*>*>) → core::bool})
             return null;
           else
             [yield] null;
@@ -125,15 +125,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::List<core::int*>*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::List<core::int*>*>};
   return :controller_stream;
 }
 static method bar() → core::Iterable<core::Map<core::int*, core::int*>*>* /* originally sync* */ {
diff --git a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect
index a832376..e4fd3e1 100644
--- a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect
@@ -22,9 +22,9 @@
       {
         core::Object* o;
         {
-          core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            dynamic x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {}
           }
         }
@@ -35,25 +35,25 @@
             #L2:
             while (true) {
               dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {}
               }
               else
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
         core::int* y;
         {
-          core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {
               y = #t4 as{TypeError,ForDynamic} core::int*;
             }
@@ -66,9 +66,9 @@
             #L3:
             while (true) {
               dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t7 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t7 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   y = #t7 as{TypeError,ForDynamic} core::int*;
                 }
@@ -77,8 +77,8 @@
                 break #L3;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -91,7 +91,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/for_in_loop_promotion.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_in_loop_promotion.dart.weak.transformed.expect
index bda8d12..6f06b13 100644
--- a/pkg/front_end/testcases/inference/for_in_loop_promotion.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_in_loop_promotion.dart.weak.transformed.expect
@@ -4,9 +4,9 @@
 
 static method test(core::List<core::num*>* nums) → void {
   {
-    core::Iterator<core::num*>* :sync-for-iterator = nums.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::num* x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::num*>* :sync-for-iterator = nums.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::num* x = :sync-for-iterator.{core::Iterator::current}{core::num*};
       {
         if(x is core::int*) {
           core::int* y = x{core::int*};
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
index 6f7152b..fb0fe5f 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
@@ -60,7 +60,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -89,7 +89,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -116,7 +116,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -143,7 +143,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -174,7 +174,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -201,7 +201,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
index fe6cbd2..4713e78 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
@@ -60,7 +60,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -89,7 +89,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -116,7 +116,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -143,7 +143,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -174,7 +174,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -201,7 +201,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
index 2cce0d4..525da31 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
@@ -60,7 +60,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -89,7 +89,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -116,7 +116,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -143,7 +143,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -174,7 +174,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -201,7 +201,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
index d90c9e6..2f0c903 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
@@ -60,7 +60,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -89,7 +89,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -116,7 +116,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -143,7 +143,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -174,7 +174,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -201,7 +201,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
index 79e4838..c03423b 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
@@ -60,7 +60,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -89,7 +89,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -116,7 +116,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -143,7 +143,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -174,7 +174,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -201,7 +201,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
index e796209..ab76385 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
@@ -60,7 +60,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -89,7 +89,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -116,7 +116,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -143,7 +143,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -174,7 +174,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -201,7 +201,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
index e243878..6efd0ab 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
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -96,7 +96,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
index 57a5fe1..29a38cc 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
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -96,7 +96,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
index dd49882..9ac9e7e 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
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -96,7 +96,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
index 0dc6739..768aaeb 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
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -96,7 +96,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
index 528b319..6fc6957 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
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -96,7 +96,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
index d783f2d..4bf5a96 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
@@ -67,7 +67,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
@@ -96,7 +96,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
index 061b526..d6e68fc 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
@@ -68,7 +68,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
@@ -97,7 +97,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
index 8f744f7..57fa2ef 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
@@ -55,7 +55,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -82,7 +82,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -110,7 +110,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
index 81ffcf6..64fb6a3 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
@@ -55,7 +55,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -82,7 +82,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -110,7 +110,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
index bbe0213..41fdde4 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
@@ -67,7 +67,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -94,7 +94,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
index 191e1c8..d88b25c 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
@@ -58,7 +58,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -85,7 +85,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
index 536aaad..b46703a 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
@@ -67,7 +67,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -94,7 +94,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
index 55d6d31..efad60a 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
@@ -58,7 +58,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -85,7 +85,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect
index 7438fe3..ced25c9 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect
@@ -47,7 +47,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect
index 611598b..ebe5e12 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect
@@ -33,7 +33,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect
index e541778..edb2427 100644
--- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect
@@ -62,7 +62,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect
index 2f34a0b..304c78c 100644
--- a/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect
@@ -21,11 +21,11 @@
         try {
           #L1:
           {
-            if(:controller.{asy::_AsyncStarStreamController::add}(0))
+            if(:controller.{asy::_AsyncStarStreamController::add}(0){(core::int*) → core::bool})
               return null;
             else
               [yield] null;
-            if(:controller.{asy::_AsyncStarStreamController::add}(1))
+            if(:controller.{asy::_AsyncStarStreamController::add}(1){(core::int*) → core::bool})
               return null;
             else
               [yield] null;
@@ -33,15 +33,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
     return :controller_stream;
   });
 }
diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
index 618d97a..3715d17 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
@@ -29,7 +29,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -59,7 +59,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -94,7 +94,7 @@
         try {
           #L3:
           {
-            if(:controller.{asy::_AsyncStarStreamController::add}(42))
+            if(:controller.{asy::_AsyncStarStreamController::add}(42){(core::int*) → core::bool})
               return null;
             else
               [yield] null;
@@ -102,15 +102,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
     return :controller_stream;
   }
   function f6() → core::num*
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect
index 06bfe90..5eb2f87 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.weak.transformed.expect
@@ -53,9 +53,9 @@
     ;
   method foo(generic-covariant-impl self::Bar::T* t) → void {
     {
-      core::Iterator<core::String*>* :sync-for-iterator = t.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::String* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::String*>* :sync-for-iterator = t.{core::Iterable::iterator}{core::Iterator<core::String*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::String* i = :sync-for-iterator.{core::Iterator::current}{core::String*};
         {
           core::int* x = let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:15:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
@@ -81,9 +81,9 @@
     ;
   method foo(generic-covariant-impl self::Baz::S* t) → void {
     {
-      core::Iterator<self::Baz::T*>* :sync-for-iterator = t.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        self::Baz::T* i = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<self::Baz::T*>* :sync-for-iterator = t.{core::Iterable::iterator}{core::Iterator<self::Baz::T*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        self::Baz::T* i = :sync-for-iterator.{core::Iterator::current}{self::Baz::T*};
         {
           core::int* x = let final Never* #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:23:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
@@ -107,9 +107,9 @@
 static method test() → dynamic {
   core::List<self::Foo*>* list = core::_GrowableList::•<self::Foo*>(0);
   {
-    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::Foo* x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<self::Foo*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::Foo* x = :sync-for-iterator.{core::Iterator::current}{self::Foo*};
       {
         core::String* y = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:32:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
  - 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart'.
@@ -119,18 +119,18 @@
     }
   }
   {
-    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<self::Foo*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic x = :sync-for-iterator.{core::Iterator::current}{self::Foo*};
       {
         core::String* y = x as{TypeError,ForDynamic} core::String*;
       }
     }
   }
   {
-    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final self::Foo* #t4 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<self::Foo*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final self::Foo* #t4 = :sync-for-iterator.{core::Iterator::current}{self::Foo*};
       {
         core::String* x = let final Never* #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:39:15: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
  - 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart'.
@@ -143,9 +143,9 @@
   }
   dynamic z;
   {
-    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final self::Foo* #t6 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::Foo*>* :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<self::Foo*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final self::Foo* #t6 = :sync-for-iterator.{core::Iterator::current}{self::Foo*};
       {
         z = #t6;
         core::String* y = z as{TypeError,ForDynamic} core::String*;
@@ -154,9 +154,9 @@
   }
   core::Iterable<dynamic>* iter = list;
   {
-    core::Iterator<dynamic>* :sync-for-iterator = iter.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = iter.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         self::Foo* x = #t7 as{TypeError,ForDynamic} self::Foo*;
         self::Foo* y = x;
@@ -165,9 +165,9 @@
   }
   dynamic iter2 = list;
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (iter2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (iter2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         self::Foo* x = #t8 as{TypeError,ForDynamic} self::Foo*;
         self::Foo* y = x;
@@ -181,18 +181,18 @@
  - 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart'.
  - 'Iterable' is from 'dart:core'.
   for (var /*@ type=dynamic */ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
-                                                                     ^" in map as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic x = :sync-for-iterator.{core::Iterator::current};
+                                                                     ^" in map as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::String* y = x as{TypeError,ForDynamic} core::String*;
       }
     }
   }
   {
-    core::Iterator<core::String*>* :sync-for-iterator = map.{core::Map::keys}{core::Iterable<core::String*>*}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String* x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String*>* :sync-for-iterator = map.{core::Map::keys}{core::Iterable<core::String*>*}.{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String* x = :sync-for-iterator.{core::Iterator::current}{core::String*};
       {
         core::String* y = x;
       }
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect
index 9b13665..a8fa094 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect
@@ -78,9 +78,9 @@
               #L2:
               while (true) {
                 dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
-                [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
                 if(_in::unsafeCast<core::bool>(:result)) {
-                  core::String* i = :for-iterator.{asy::_StreamIterator::current};
+                  core::String* i = :for-iterator.{asy::_StreamIterator::current}{core::String*};
                   {
                     core::int* x = let final Never* #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
@@ -91,8 +91,8 @@
                   break #L2;
               }
             finally
-              if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-                [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String*>?} == null)) {
+                [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
                 :result;
               }
           }
@@ -105,7 +105,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -147,9 +147,9 @@
               #L4:
               while (true) {
                 dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream);
-                [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
                 if(_in::unsafeCast<core::bool>(:result)) {
-                  self::Baz::T* i = :for-iterator.{asy::_StreamIterator::current};
+                  self::Baz::T* i = :for-iterator.{asy::_StreamIterator::current}{self::Baz::T*};
                   {
                     core::int* x = let final Never* #t7 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
@@ -161,8 +161,8 @@
                   break #L4;
               }
             finally
-              if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-                [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Baz::T*>?} == null)) {
+                [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
                 :result;
               }
           }
@@ -175,7 +175,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -265,9 +265,9 @@
             #L6:
             while (true) {
               dynamic #t9 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                self::Foo* x = :for-iterator.{asy::_StreamIterator::current};
+                self::Foo* x = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
                 {
                   core::String* y = let final Never* #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
  - 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart'.
@@ -279,8 +279,8 @@
                 break #L6;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null)) {
+              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -291,9 +291,9 @@
             #L7:
             while (true) {
               dynamic #t13 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   core::String* y = x as{TypeError,ForDynamic} core::String*;
                 }
@@ -302,8 +302,8 @@
                 break #L7;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -314,9 +314,9 @@
             #L8:
             while (true) {
               dynamic #t16 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final self::Foo* #t18 = :for-iterator.{asy::_StreamIterator::current};
+                final self::Foo* #t18 = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
                 {
                   core::String* x = let final Never* #t19 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
  - 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart'.
@@ -330,8 +330,8 @@
                 break #L8;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null)) {
+              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -343,9 +343,9 @@
             #L9:
             while (true) {
               dynamic #t21 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final self::Foo* #t23 = :for-iterator.{asy::_StreamIterator::current};
+                final self::Foo* #t23 = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
                 {
                   z = #t23;
                   core::String* y = z as{TypeError,ForDynamic} core::String*;
@@ -355,8 +355,8 @@
                 break #L9;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null)) {
+              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -368,9 +368,9 @@
             #L10:
             while (true) {
               dynamic #t25 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t26 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t26 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t27 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t27 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   self::Foo* x = #t27 as{TypeError,ForDynamic} self::Foo*;
                   self::Foo* y = x;
@@ -380,8 +380,8 @@
                 break #L10;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t28 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t28 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -393,9 +393,9 @@
             #L11:
             while (true) {
               dynamic #t29 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t30 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t30 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t31 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t31 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   self::Foo* x = #t31 as{TypeError,ForDynamic} self::Foo*;
                   self::Foo* y = x;
@@ -405,8 +405,8 @@
                 break #L11;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t32 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t32 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -423,9 +423,9 @@
             #L12:
             while (true) {
               dynamic #t34 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t35 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t35 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   core::String* y = x as{TypeError,ForDynamic} core::String*;
                 }
@@ -434,8 +434,8 @@
                 break #L12;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t36 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t36 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -448,7 +448,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect
index d8f508b..00b4229 100644
--- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect
@@ -44,7 +44,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -96,7 +96,7 @@
         try {
           #L2:
           {
-            if(:controller.{asy::_AsyncStarStreamController::add}((core::int* x) → core::int* => x))
+            if(:controller.{asy::_AsyncStarStreamController::add}((core::int* x) → core::int* => x){((core::int*) →* core::int*) → core::bool})
               return null;
             else
               [yield] null;
@@ -104,15 +104,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
     return :controller_stream;
   }
   function f() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
@@ -129,7 +129,7 @@
         try {
           #L3:
           {
-            if(:controller.{asy::_AsyncStarStreamController::addStream}(asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x))))
+            if(:controller.{asy::_AsyncStarStreamController::addStream}(asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x))){(asy::Stream<(core::int*) →* core::int*>) → core::bool})
               return null;
             else
               [yield] null;
@@ -137,15 +137,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
     return :controller_stream;
   }
 }
diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect
index df260ca..f81139c 100644
--- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect
@@ -43,7 +43,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -95,7 +95,7 @@
       try {
         #L2:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}((core::int* x) → core::int* => x))
+          if(:controller.{asy::_AsyncStarStreamController::add}((core::int* x) → core::int* => x){((core::int*) →* core::int*) → core::bool})
             return null;
           else
             [yield] null;
@@ -103,15 +103,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
   return :controller_stream;
 }
 static method f() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
@@ -128,7 +128,7 @@
       try {
         #L3:
         {
-          if(:controller.{asy::_AsyncStarStreamController::addStream}(asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x))))
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x))){(asy::Stream<(core::int*) →* core::int*>) → core::bool})
             return null;
           else
             [yield] null;
@@ -136,15 +136,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
   return :controller_stream;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.weak.transformed.expect
index 769b671..b44d33f 100644
--- a/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_identifier_downwards.dart.weak.transformed.expect
@@ -26,45 +26,45 @@
   method test() → void {
     self::A* aLocal;
     {
-      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final self::A* #t1 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final self::A* #t1 = :sync-for-iterator.{core::Iterator::current}{self::A*};
         {
           aLocal = #t1;
         }
       }
     }
     {
-      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final self::A* #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final self::A* #t2 = :sync-for-iterator.{core::Iterator::current}{self::A*};
         {
           this.{self::C::aField} = #t2;
         }
       }
     }
     {
-      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final self::A* #t3 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final self::A* #t3 = :sync-for-iterator.{core::Iterator::current}{self::A*};
         {
           this.{self::C::aSetter} = #t3;
         }
       }
     }
     {
-      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final self::A* #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final self::A* #t4 = :sync-for-iterator.{core::Iterator::current}{self::A*};
         {
           self::aTopLevel = #t4;
         }
       }
     }
     {
-      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final self::A* #t5 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final self::A* #t5 = :sync-for-iterator.{core::Iterator::current}{self::A*};
         {
           self::aTopLevelSetter = #t5;
         }
diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect
index 2a4911b..ad564fc 100644
--- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect
@@ -48,9 +48,9 @@
           core::Iterator<dynamic>* :sync-for-iterator = (let final Never* #t1 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:17: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Iterable' is from 'dart:core'.
   for (int x in s) {}
-                ^" in s as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+                ^" in s as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {
               core::int* x = #t2 as{TypeError,ForDynamic} core::int*;
             }
@@ -66,9 +66,9 @@
             #L2:
             while (true) {
               dynamic #t4 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t6 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t6 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   core::int* x = #t6 as{TypeError,ForDynamic} core::int*;
                 }
@@ -77,8 +77,8 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -87,9 +87,9 @@
           core::Iterator<dynamic>* :sync-for-iterator = (let final Never* #t8 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:13: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
  - 'Iterable' is from 'dart:core'.
   for (y in s) {}
-            ^" in s as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
+            ^" in s as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {
               y = #t9 as{TypeError,ForDynamic} core::int*;
             }
@@ -105,9 +105,9 @@
             #L3:
             while (true) {
               dynamic #t11 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final dynamic #t13 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t13 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   y = #t13 as{TypeError,ForDynamic} core::int*;
                 }
@@ -116,8 +116,8 @@
                 break #L3;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -130,7 +130,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect
index c6eeca6..0e6f089 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect
@@ -65,9 +65,9 @@
         self::B* b;
         core::int* i;
         {
-          core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final self::A* #t1 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final self::A* #t1 = :sync-for-iterator.{core::Iterator::current}{self::A*};
             {
               a = #t1;
             }
@@ -80,9 +80,9 @@
             #L2:
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final self::A* #t4 = :for-iterator.{asy::_StreamIterator::current};
+                final self::A* #t4 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
                 {
                   a = #t4;
                 }
@@ -91,15 +91,15 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
+              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
         {
-          core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final self::A* #t6 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final self::A* #t6 = :sync-for-iterator.{core::Iterator::current}{self::A*};
             {
               b = #t6 as{TypeError} self::B*;
             }
@@ -112,9 +112,9 @@
             #L3:
             while (true) {
               dynamic #t7 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final self::A* #t9 = :for-iterator.{asy::_StreamIterator::current};
+                final self::A* #t9 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
                 {
                   b = #t9 as{TypeError} self::B*;
                 }
@@ -123,15 +123,15 @@
                 break #L3;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
+              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
         {
-          core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final self::A* #t11 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final self::A* #t11 = :sync-for-iterator.{core::Iterator::current}{self::A*};
             {
               i = let final Never* #t12 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:10: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart'.
@@ -148,9 +148,9 @@
             #L4:
             while (true) {
               dynamic #t13 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final self::A* #t15 = :for-iterator.{asy::_StreamIterator::current};
+                final self::A* #t15 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
                 {
                   i = let final Never* #t16 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:16: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
  - 'A' is from 'pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart'.
@@ -163,15 +163,15 @@
                 break #L4;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
+              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
         {
-          core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final self::A* #t18 = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final self::A* #t18 = :sync-for-iterator.{core::Iterator::current}{self::A*};
             {
               a = #t18;
             }
@@ -184,9 +184,9 @@
             #L5:
             while (true) {
               dynamic #t19 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                final self::A* #t21 = :for-iterator.{asy::_StreamIterator::current};
+                final self::A* #t21 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
                 {
                   a = #t21;
                 }
@@ -195,8 +195,8 @@
                 break #L5;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
+              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -209,7 +209,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
index 4aedf2e..00e3810 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.strong.transformed.expect
@@ -20,9 +20,9 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
       {
         core::print(i);
       }
diff --git a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
index 4aedf2e..00e3810 100644
--- a/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue40093.dart.weak.transformed.expect
@@ -20,9 +20,9 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
       {
         core::print(i);
       }
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
index d99c70a..3e60aa9 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
@@ -122,9 +122,9 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String s = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator}{core::Iterator<core::String>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String s = :sync-for-iterator.{core::Iterator::current}{core::String};
       {
         core::print(s);
       }
@@ -159,9 +159,9 @@
             #L2:
             while (true) {
               dynamic #t8 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::String s = :for-iterator.{asy::_StreamIterator::current};
+                core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
                 {
                   core::print(s);
                 }
@@ -170,8 +170,8 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
+              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -186,7 +186,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -243,7 +243,7 @@
               }
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
             :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-            :async_op.call();
+            :async_op(){() → dynamic};
             :is_sync = true;
             return :async_future;
           } : #t15{core::Function};
@@ -258,7 +258,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -270,4 +270,4 @@
 
 Extra constant evaluation status:
 Evaluated: VariableGet @ org-dartlang-testcase:///later.dart:46:18 -> IntConstant(42)
-Extra constant evaluation: evaluated: 207, effectively constant: 1
+Extra constant evaluation: evaluated: 204, effectively constant: 1
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
index daa7970..53b5f1b 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
@@ -142,9 +142,9 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String s = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator}{core::Iterator<core::String>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String s = :sync-for-iterator.{core::Iterator::current}{core::String};
       {
         core::print(s);
       }
@@ -179,9 +179,9 @@
             #L2:
             while (true) {
               dynamic #t8 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::String s = :for-iterator.{asy::_StreamIterator::current};
+                core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
                 {
                   core::print(s);
                 }
@@ -190,8 +190,8 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
+              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -206,7 +206,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -281,7 +281,7 @@
                 }
               :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
               :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-              :async_op.call();
+              :async_op(){() → dynamic};
               :is_sync = true;
               return :async_future;
             };
@@ -302,7 +302,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
index 8d03a24..68d5235 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
@@ -234,9 +234,9 @@
   <A, A>{...m2}; // Error.
             ^": null};
   {
-    core::Iterator<self::B?> :sync-for-iterator = l.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final self::B? #t5 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B?> :sync-for-iterator = l.{core::Iterable::iterator}{core::Iterator<self::B?>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final self::B? #t5 = :sync-for-iterator.{core::Iterator::current}{self::B?};
       {
         self::A y = let final Never #t6 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:10: Error: A value of type 'B?' can't be assigned to a variable of type 'A' because 'B?' is nullable and 'A' isn't.
  - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -253,9 +253,9 @@
  - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
  - 'Iterable' is from 'dart:core'.
   for (A y in l2) {} // Error.
-              ^" in let core::List<self::B>? #t9 = l2 in #t9.==(null) ?{core::Iterable<dynamic>} #t9 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t9{core::Iterable<dynamic>}).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A y = :sync-for-iterator.{core::Iterator::current};
+              ^" in let core::List<self::B>? #t9 = l2 in #t9.==(null) ?{core::Iterable<dynamic>} #t9 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t9{core::Iterable<dynamic>}).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A y = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {}
     }
   }
@@ -310,7 +310,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -351,9 +351,9 @@
   <List<A>, List<A>>{...m}; // Error.
                         ^"};
   {
-    core::Iterator<core::List<self::B?>> :sync-for-iterator = l.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::List<self::B?> #t17 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::List<self::B?>> :sync-for-iterator = l.{core::Iterable::iterator}{core::Iterator<core::List<self::B?>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::List<self::B?> #t17 = :sync-for-iterator.{core::Iterator::current}{core::List<self::B?>};
       {
         core::List<self::A> y = let final Never #t18 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:57:16: Error: A value of type 'List<B?>' can't be assigned to a variable of type 'List<A>' because 'B?' is nullable and 'A' isn't.
  - 'List' is from 'dart:core'.
@@ -442,7 +442,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -466,7 +466,7 @@
 Evaluated: MethodInvocation @ org-dartlang-testcase:///assignability_error_messages.dart:77:14 -> BoolConstant(true)
 Evaluated: VariableGet @ org-dartlang-testcase:///assignability_error_messages.dart:77:14 -> NullConstant(null)
 Evaluated: VariableGet @ org-dartlang-testcase:///assignability_error_messages.dart:77:14 -> NullConstant(null)
-Extra constant evaluation: evaluated: 210, effectively constant: 12
+Extra constant evaluation: evaluated: 208, effectively constant: 12
 
 
 Constructor coverage from constants:
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
index 3f9fa94..b693442 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
@@ -234,9 +234,9 @@
   <A, A>{...m2}; // Error.
             ^": null};
   {
-    core::Iterator<self::B?> :sync-for-iterator = l.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final self::B? #t3 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B?> :sync-for-iterator = l.{core::Iterable::iterator}{core::Iterator<self::B?>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final self::B? #t3 = :sync-for-iterator.{core::Iterator::current}{self::B?};
       {
         self::A y = let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:10: Error: A value of type 'B?' can't be assigned to a variable of type 'A' because 'B?' is nullable and 'A' isn't.
  - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -253,9 +253,9 @@
  - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
  - 'Iterable' is from 'dart:core'.
   for (A y in l2) {} // Error.
-              ^" in l2).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A y = :sync-for-iterator.{core::Iterator::current};
+              ^" in l2).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A y = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {}
     }
   }
@@ -310,7 +310,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -351,9 +351,9 @@
   <List<A>, List<A>>{...m}; // Error.
                         ^"};
   {
-    core::Iterator<core::List<self::B?>> :sync-for-iterator = l.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::List<self::B?> #t11 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::List<self::B?>> :sync-for-iterator = l.{core::Iterable::iterator}{core::Iterator<core::List<self::B?>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::List<self::B?> #t11 = :sync-for-iterator.{core::Iterator::current}{core::List<self::B?>};
       {
         core::List<self::A> y = let final Never #t12 = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:57:16: Error: A value of type 'List<B?>' can't be assigned to a variable of type 'List<A>' because 'B?' is nullable and 'A' isn't.
  - 'List' is from 'dart:core'.
@@ -442,7 +442,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
index 51a1889..601dda0 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
@@ -46,7 +46,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -114,7 +114,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -173,7 +173,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
index 51a1889..601dda0 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
@@ -46,7 +46,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -114,7 +114,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -173,7 +173,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
index 06dc1da..810d4fa 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.strong.transformed.expect
@@ -56,9 +56,9 @@
     core::Iterator<dynamic> :sync-for-iterator = (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:9:17: Error: The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>' because 'Iterable<int>?' is nullable and 'Iterable<dynamic>' isn't.
  - 'Iterable' is from 'dart:core'.
   for (int x in i2) x;
-                ^" in let core::Iterable<core::int>? #t2 = i2 in #t2.==(null) ?{core::Iterable<dynamic>} #t2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t2{core::Iterable<dynamic>}).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+                ^" in let core::Iterable<core::int>? #t2 = i2 in #t2.==(null) ?{core::Iterable<dynamic>} #t2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t2{core::Iterable<dynamic>}).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
       x;
     }
   }
@@ -68,9 +68,9 @@
       core::Iterator<dynamic> :sync-for-iterator = (let final Never #t4 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:10:18: Error: The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>' because 'Iterable<int>?' is nullable and 'Iterable<dynamic>' isn't.
  - 'Iterable' is from 'dart:core'.
   [for (int x in i2) x];
-                 ^" in let core::Iterable<core::int>? #t5 = i2 in #t5.==(null) ?{core::Iterable<dynamic>} #t5 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t5{core::Iterable<dynamic>}).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+                 ^" in let core::Iterable<core::int>? #t5 = i2 in #t5.==(null) ?{core::Iterable<dynamic>} #t5 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t5{core::Iterable<dynamic>}).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t3.{core::List::add}(x){(core::int) → void};
       }
     }
@@ -80,9 +80,9 @@
  - 'List' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   for (int x in l2) x;
-                ^" in let core::List<core::int>? #t7 = l2 in #t7.==(null) ?{core::Iterable<dynamic>} #t7 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t7{core::Iterable<dynamic>}).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+                ^" in let core::List<core::int>? #t7 = l2 in #t7.==(null) ?{core::Iterable<dynamic>} #t7 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t7{core::Iterable<dynamic>}).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
       x;
     }
   }
@@ -93,9 +93,9 @@
  - 'List' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   [for (int x in l2) x];
-                 ^" in let core::List<core::int>? #t10 = l2 in #t10.==(null) ?{core::Iterable<dynamic>} #t10 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t10{core::Iterable<dynamic>}).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+                 ^" in let core::List<core::int>? #t10 = l2 in #t10.==(null) ?{core::Iterable<dynamic>} #t10 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic> : #t10{core::Iterable<dynamic>}).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t8.{core::List::add}(x){(core::int) → void};
       }
     }
@@ -105,9 +105,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   for (int x in o1) x;
-                ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+                ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::int x = #t12 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
         x;
@@ -121,9 +121,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   [for (int x in o1) x];
-                 ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
+                 ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::int x = #t15 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
           #t13.{core::List::add}(x){(core::int) → void};
@@ -136,9 +136,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   for (int x in o2) x;
-                ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t17 = :sync-for-iterator.{core::Iterator::current};
+                ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t17 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::int x = #t17 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
         x;
@@ -152,9 +152,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   [for (int x in o2) x];
-                 ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t20 = :sync-for-iterator.{core::Iterator::current};
+                 ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t20 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::int x = #t20 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
           #t18.{core::List::add}(x){(core::int) → void};
@@ -165,43 +165,43 @@
 }
 static method ok(core::Iterable<core::int> i1, core::List<core::int> l1, dynamic d) → dynamic {
   {
-    core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
       x;
     }
   }
   block {
     final core::List<core::int> #t21 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
         #t21.{core::List::add}(x){(core::int) → void};
       }
     }
   } =>#t21;
   {
-    core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
       x;
     }
   }
   block {
     final core::List<core::int> #t22 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
         #t22.{core::List::add}(x){(core::int) → void};
       }
     }
   } =>#t22;
   {
-    core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t23 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::int x = #t23 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
         x;
@@ -211,9 +211,9 @@
   block {
     final core::List<core::int> #t24 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t25 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::int x = #t25 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
           #t24.{core::List::add}(x){(core::int) → void};
diff --git a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
index 1d91444..9195703 100644
--- a/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/forin.dart.weak.transformed.expect
@@ -56,9 +56,9 @@
     core::Iterator<dynamic> :sync-for-iterator = (let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:9:17: Error: The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>' because 'Iterable<int>?' is nullable and 'Iterable<dynamic>' isn't.
  - 'Iterable' is from 'dart:core'.
   for (int x in i2) x;
-                ^" in i2).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+                ^" in i2).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
       x;
     }
   }
@@ -68,9 +68,9 @@
       core::Iterator<dynamic> :sync-for-iterator = (let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/forin.dart:10:18: Error: The type 'Iterable<int>?' used in the 'for' loop must implement 'Iterable<dynamic>' because 'Iterable<int>?' is nullable and 'Iterable<dynamic>' isn't.
  - 'Iterable' is from 'dart:core'.
   [for (int x in i2) x];
-                 ^" in i2).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+                 ^" in i2).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t2.{core::List::add}(x){(core::int) → void};
       }
     }
@@ -80,9 +80,9 @@
  - 'List' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   for (int x in l2) x;
-                ^" in l2).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+                ^" in l2).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
       x;
     }
   }
@@ -93,9 +93,9 @@
  - 'List' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   [for (int x in l2) x];
-                 ^" in l2).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+                 ^" in l2).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t5.{core::List::add}(x){(core::int) → void};
       }
     }
@@ -105,9 +105,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   for (int x in o1) x;
-                ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+                ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::int x = #t8 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
         x;
@@ -121,9 +121,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   [for (int x in o1) x];
-                 ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t11 = :sync-for-iterator.{core::Iterator::current};
+                 ^" in o1 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t11 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::int x = #t11 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
           #t9.{core::List::add}(x){(core::int) → void};
@@ -136,9 +136,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   for (int x in o2) x;
-                ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t13 = :sync-for-iterator.{core::Iterator::current};
+                ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t13 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::int x = #t13 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
         x;
@@ -152,9 +152,9 @@
  - 'Object' is from 'dart:core'.
  - 'Iterable' is from 'dart:core'.
   [for (int x in o2) x];
-                 ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
+                 ^" in o2 as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::int x = #t16 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
           #t14.{core::List::add}(x){(core::int) → void};
@@ -165,43 +165,43 @@
 }
 static method ok(core::Iterable<core::int> i1, core::List<core::int> l1, dynamic d) → dynamic {
   {
-    core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
       x;
     }
   }
   block {
     final core::List<core::int> #t17 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int> :sync-for-iterator = i1.{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
         #t17.{core::List::add}(x){(core::int) → void};
       }
     }
   } =>#t17;
   {
-    core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
       x;
     }
   }
   block {
     final core::List<core::int> #t18 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        core::int x = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::int> :sync-for-iterator = l1.{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
         #t18.{core::List::add}(x){(core::int) → void};
       }
     }
   } =>#t18;
   {
-    core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t19 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         core::int x = #t19 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
         x;
@@ -211,9 +211,9 @@
   block {
     final core::List<core::int> #t20 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t21 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (d as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t21 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::int x = #t21 as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
           #t20.{core::List::add}(x){(core::int) → void};
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
index b44b839..614b401 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.strong.transformed.expect
@@ -20,9 +20,9 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
       {
         core::print(i);
       }
diff --git a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
index b44b839..614b401 100644
--- a/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue40093.dart.weak.transformed.expect
@@ -20,9 +20,9 @@
     core::print(i);
   }
   {
-    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator}{core::Iterator<core::int>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
       {
         core::print(i);
       }
diff --git a/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect
index e3f7bc6..f7c18e2 100644
--- a/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect
@@ -40,7 +40,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect
index c121ca7..0ba3732 100644
--- a/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
index a58c8e8..9eb092b 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
@@ -28,7 +28,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
index a58c8e8..9eb092b 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
@@ -28,7 +28,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
index dc8a2d3..4f6a3ba 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
@@ -78,7 +78,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -104,7 +104,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -131,7 +131,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -158,7 +158,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -184,7 +184,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -211,7 +211,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -298,7 +298,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -333,7 +333,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -367,7 +367,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -402,7 +402,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -415,7 +415,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
index b374725..6e6ee4d 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
@@ -79,7 +79,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -105,7 +105,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -132,7 +132,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -159,7 +159,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -185,7 +185,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -212,7 +212,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -299,7 +299,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -334,7 +334,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -368,7 +368,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -403,7 +403,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -416,7 +416,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
index 320f6e7..72d6a6a 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
@@ -56,7 +56,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -83,7 +83,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -112,7 +112,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -145,7 +145,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -179,7 +179,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -220,7 +220,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -253,7 +253,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -287,7 +287,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -319,7 +319,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
@@ -353,7 +353,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
@@ -385,7 +385,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         })(){() → asy::Future<core::bool>};
@@ -398,7 +398,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
index 320f6e7..72d6a6a 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
@@ -56,7 +56,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -83,7 +83,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -112,7 +112,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -145,7 +145,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -179,7 +179,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -220,7 +220,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -253,7 +253,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -287,7 +287,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -319,7 +319,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
@@ -353,7 +353,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
@@ -385,7 +385,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         })(){() → asy::Future<core::bool>};
@@ -398,7 +398,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
index 99e8151..70fbbeb 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
@@ -292,7 +292,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
index 99e8151..70fbbeb 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
@@ -292,7 +292,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
index b3f22ba..943f144 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
@@ -57,7 +57,7 @@
       try {
         #L1:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(null))
+          if(:controller.{asy::_AsyncStarStreamController::add}(null){(dynamic) → core::bool})
             return null;
           else
             [yield] null;
@@ -65,15 +65,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
   return :controller_stream;
 }
 static method getStreamBool() → asy::Stream<core::bool> /* originally async* */ {
@@ -90,7 +90,7 @@
       try {
         #L2:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(true))
+          if(:controller.{asy::_AsyncStarStreamController::add}(true){(core::bool) → core::bool})
             return null;
           else
             [yield] null;
@@ -98,15 +98,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test1() → asy::Stream<core::bool> /* originally async* */ {
@@ -123,7 +123,7 @@
       try {
         #L3:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool))
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
             return null;
           else
             [yield] null;
@@ -131,15 +131,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test2() → asy::Stream<core::bool>
@@ -163,7 +163,7 @@
           if(:controller.{asy::_AsyncStarStreamController::addStream}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:21:10: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   yield* getStreamNull(); // error
-         ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>))
+         ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → core::bool})
             return null;
           else
             [yield] null;
@@ -171,15 +171,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test5() → asy::Stream<core::bool>
@@ -203,7 +203,7 @@
       try {
         #L5:
         {
-          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()))
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → core::bool})
             return null;
           else
             [yield] null;
@@ -211,15 +211,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test() → dynamic /* originally async */ {
@@ -248,7 +248,7 @@
               try {
                 #L7:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool))
+                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -256,15 +256,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         }
         function test2() → asy::Stream<core::bool>
@@ -288,7 +288,7 @@
                   if(:controller.{asy::_AsyncStarStreamController::addStream}(let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:38:12: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
     yield* getStreamNull(); // error
-           ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>))
+           ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -296,15 +296,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         }
         function test5() → asy::Stream<core::bool>
@@ -328,7 +328,7 @@
               try {
                 #L9:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()))
+                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -336,15 +336,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         }
         asy::Stream<core::bool> var1 = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:49:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
@@ -364,7 +364,7 @@
               try {
                 #L10:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull()))
+                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull()){(dynamic) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -372,15 +372,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
           return :controller_stream;
         })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
         asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
@@ -402,7 +402,7 @@
               try {
                 #L11:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamNull()))
+                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamNull()){(asy::Stream<dynamic>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -410,15 +410,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
           return :controller_stream;
         })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
         asy::Stream<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
@@ -440,7 +440,7 @@
               try {
                 #L12:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()))
+                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -448,15 +448,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         })(){() → asy::Stream<core::bool>};
       }
@@ -468,7 +468,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
index b3f22ba..943f144 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
@@ -57,7 +57,7 @@
       try {
         #L1:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(null))
+          if(:controller.{asy::_AsyncStarStreamController::add}(null){(dynamic) → core::bool})
             return null;
           else
             [yield] null;
@@ -65,15 +65,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
   return :controller_stream;
 }
 static method getStreamBool() → asy::Stream<core::bool> /* originally async* */ {
@@ -90,7 +90,7 @@
       try {
         #L2:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(true))
+          if(:controller.{asy::_AsyncStarStreamController::add}(true){(core::bool) → core::bool})
             return null;
           else
             [yield] null;
@@ -98,15 +98,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test1() → asy::Stream<core::bool> /* originally async* */ {
@@ -123,7 +123,7 @@
       try {
         #L3:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool))
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
             return null;
           else
             [yield] null;
@@ -131,15 +131,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test2() → asy::Stream<core::bool>
@@ -163,7 +163,7 @@
           if(:controller.{asy::_AsyncStarStreamController::addStream}(let final Never #t1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:21:10: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
   yield* getStreamNull(); // error
-         ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>))
+         ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → core::bool})
             return null;
           else
             [yield] null;
@@ -171,15 +171,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test5() → asy::Stream<core::bool>
@@ -203,7 +203,7 @@
       try {
         #L5:
         {
-          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()))
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → core::bool})
             return null;
           else
             [yield] null;
@@ -211,15 +211,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
   return :controller_stream;
 }
 static method test() → dynamic /* originally async */ {
@@ -248,7 +248,7 @@
               try {
                 #L7:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool))
+                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -256,15 +256,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         }
         function test2() → asy::Stream<core::bool>
@@ -288,7 +288,7 @@
                   if(:controller.{asy::_AsyncStarStreamController::addStream}(let final Never #t3 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:38:12: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
  - 'Stream' is from 'dart:async'.
     yield* getStreamNull(); // error
-           ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>))
+           ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -296,15 +296,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         }
         function test5() → asy::Stream<core::bool>
@@ -328,7 +328,7 @@
               try {
                 #L9:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()))
+                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -336,15 +336,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         }
         asy::Stream<core::bool> var1 = let final Never #t5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:49:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
@@ -364,7 +364,7 @@
               try {
                 #L10:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull()))
+                  if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull()){(dynamic) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -372,15 +372,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
           return :controller_stream;
         })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
         asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
@@ -402,7 +402,7 @@
               try {
                 #L11:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamNull()))
+                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamNull()){(asy::Stream<dynamic>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -410,15 +410,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
           return :controller_stream;
         })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
         asy::Stream<core::bool> var5 = let final Never #t7 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
@@ -440,7 +440,7 @@
               try {
                 #L12:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()))
+                  if(:controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -448,15 +448,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
           return :controller_stream;
         })(){() → asy::Stream<core::bool>};
       }
@@ -468,7 +468,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect
index e85bc0e..50a282e 100644
--- a/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect
@@ -35,7 +35,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -60,7 +60,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -90,7 +90,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -118,7 +118,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect
index e85bc0e..50a282e 100644
--- a/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -60,7 +60,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -90,7 +90,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -118,7 +118,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
index aef590c..8b732be 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
@@ -59,7 +59,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -98,7 +98,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
index aef590c..8b732be 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
@@ -59,7 +59,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
@@ -98,7 +98,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   };
diff --git a/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect
index 4e127a6..6ba990a 100644
--- a/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect
@@ -32,7 +32,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect
index e61b30d..4d5ecd6 100644
--- a/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect
@@ -32,7 +32,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
index 69395db..22760fa 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
@@ -45,7 +45,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -58,7 +58,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
index 69395db..22760fa 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
@@ -45,7 +45,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         };
@@ -58,7 +58,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect
index fc29605..7b9a1bb 100644
--- a/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42758.dart.strong.transformed.expect
@@ -148,9 +148,9 @@
   core::Map<Never, Never> m1 = block {
     final core::Map<Never, Never> #t17 = <Never, Never>{};
     {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = n1.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t18 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = n1.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t18 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}{Never}, #t18.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -160,9 +160,9 @@
     final core::Map<Never, Never> #t19 = <Never, Never>{};
     final core::Map<Never, Never>? #t20 = n1;
     if(!(#t20 == null)) {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t20{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t21 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t20{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t21 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t19.{core::Map::[]=}(#t21.{core::MapEntry::key}{Never}, #t21.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -175,9 +175,9 @@
     final core::Map<Never, Never> #t22 = <Never, Never>{};
     final core::Map<Never, Never>? #t23 = n2;
     if(!(#t23 == null)) {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t23{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t24 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t23{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t24 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t22.{core::Map::[]=}(#t24.{core::MapEntry::key}{Never}, #t24.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -190,9 +190,9 @@
     final core::Map<Never, Never> #t25 = <Never, Never>{};
     final core::Map<Never, Never>? #t26 = n3;
     if(!(#t26 == null)) {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t26{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t27 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t26{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t27 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}{Never}, #t27.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -269,9 +269,9 @@
   core::Map<self::test2::N1, self::test2::N1> m1 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t44 = <self::test2::N1, self::test2::N1>{};
     {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = n1.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t45 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = n1.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t45 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t44.{core::Map::[]=}(#t45.{core::MapEntry::key}{self::test2::N1}, #t45.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
@@ -281,9 +281,9 @@
     final core::Map<self::test2::N1, self::test2::N1> #t46 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t47 = n1;
     if(!(#t47 == null)) {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t47{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t48 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t47{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t48 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t46.{core::Map::[]=}(#t48.{core::MapEntry::key}{self::test2::N1}, #t48.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
@@ -296,9 +296,9 @@
     final core::Map<self::test2::N1, self::test2::N1> #t49 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t50 = n2;
     if(!(#t50 == null)) {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t50{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t51 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t50{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t51 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t49.{core::Map::[]=}(#t51.{core::MapEntry::key}{self::test2::N1}, #t51.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
@@ -311,9 +311,9 @@
     final core::Map<self::test2::N1, self::test2::N1> #t52 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t53 = n3;
     if(!(#t53 == null)) {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t53{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t54 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t53{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t54 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t52.{core::Map::[]=}(#t54.{core::MapEntry::key}{self::test2::N1}, #t54.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect
index d7272c6..6652f27 100644
--- a/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42758.dart.weak.transformed.expect
@@ -149,9 +149,9 @@
   core::Map<Never, Never> m1 = block {
     final core::Map<Never, Never> #t27 = <Never, Never>{};
     {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = (let final Never #t28 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t29 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = (let final Never #t28 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t29 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t27.{core::Map::[]=}(#t29.{core::MapEntry::key}{Never}, #t29.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -161,9 +161,9 @@
     final core::Map<Never, Never> #t32 = <Never, Never>{};
     final core::Map<Never, Never>? #t33 = let final Never #t34 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
     if(!(#t33 == null)) {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t33{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t35 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t33{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t35 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t32.{core::Map::[]=}(#t35.{core::MapEntry::key}{Never}, #t35.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -176,9 +176,9 @@
     final core::Map<Never, Never> #t40 = <Never, Never>{};
     final core::Map<Never, Never>? #t41 = n2;
     if(!(#t41 == null)) {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t41{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t42 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t41{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t42 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t40.{core::Map::[]=}(#t42.{core::MapEntry::key}{Never}, #t42.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -191,9 +191,9 @@
     final core::Map<Never, Never> #t47 = <Never, Never>{};
     final core::Map<Never, Never>? #t48 = n3;
     if(!(#t48 == null)) {
-      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t48{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<Never, Never> #t49 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t48{core::Map<Never, Never>}.{core::Map::entries}{core::Iterable<core::MapEntry<Never, Never>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<Never, Never>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<Never, Never> #t49 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<Never, Never>};
         #t47.{core::Map::[]=}(#t49.{core::MapEntry::key}{Never}, #t49.{core::MapEntry::value}{Never}){(Never, Never) → void};
       }
     }
@@ -270,9 +270,9 @@
   core::Map<self::test2::N1, self::test2::N1> m1 = block {
     final core::Map<self::test2::N1, self::test2::N1> #t78 = <self::test2::N1, self::test2::N1>{};
     {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = (let final self::test2::N1 #t79 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t80 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = (let final self::test2::N1 #t79 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.")).{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t80 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t78.{core::Map::[]=}(#t80.{core::MapEntry::key}{self::test2::N1}, #t80.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
@@ -282,9 +282,9 @@
     final core::Map<self::test2::N1, self::test2::N1> #t83 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t84 = let final self::test2::N1 #t85 = n1 in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
     if(!(#t84 == null)) {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t84{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t86 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t84{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t86 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t83.{core::Map::[]=}(#t86.{core::MapEntry::key}{self::test2::N1}, #t86.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
@@ -297,9 +297,9 @@
     final core::Map<self::test2::N1, self::test2::N1> #t91 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t92 = n2;
     if(!(#t92 == null)) {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t92{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t93 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t92{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t93 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t91.{core::Map::[]=}(#t93.{core::MapEntry::key}{self::test2::N1}, #t93.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
@@ -312,9 +312,9 @@
     final core::Map<self::test2::N1, self::test2::N1> #t98 = <self::test2::N1, self::test2::N1>{};
     final core::Map<self::test2::N1, self::test2::N1>? #t99 = n3;
     if(!(#t99 == null)) {
-      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t99{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<self::test2::N1, self::test2::N1> #t100 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t99{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}{core::Iterable<core::MapEntry<self::test2::N1, self::test2::N1>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<self::test2::N1, self::test2::N1> #t100 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<self::test2::N1, self::test2::N1>};
         #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}{self::test2::N1}, #t100.{core::MapEntry::value}{self::test2::N1}){(self::test2::N1, self::test2::N1) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect
index fb6047d..bc28998 100644
--- a/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43256.dart.strong.transformed.expect
@@ -62,16 +62,16 @@
   if (i > 0) ...nullableMap, // error
                 ^", null){(dynamic, dynamic) → void};
   if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic> #t2 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic> #t2 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}{dynamic}, #t2.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
     }
   }
   if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = self::nullableMap!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic> #t3 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = self::nullableMap!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic> #t3 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t1.{core::Map::[]=}(#t3.{core::MapEntry::key}{dynamic}, #t3.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
     }
   }
@@ -111,16 +111,16 @@
     if (i > 0) ...y, // error
                   ^", null){(dynamic, dynamic) → void};
     if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = z.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic> #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = z.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t7 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t6.{core::Map::[]=}(#t7.{core::MapEntry::key}{dynamic}, #t7.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
       }
     }
     if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = y!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic> #t8 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = y!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t8 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t6.{core::Map::[]=}(#t8.{core::MapEntry::key}{dynamic}, #t8.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect
index fb6047d..bc28998 100644
--- a/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43256.dart.weak.transformed.expect
@@ -62,16 +62,16 @@
   if (i > 0) ...nullableMap, // error
                 ^", null){(dynamic, dynamic) → void};
   if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic> #t2 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = (self::dynamicMap as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic> #t2 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}{dynamic}, #t2.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
     }
   }
   if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = self::nullableMap!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic> #t3 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = self::nullableMap!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic> #t3 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t1.{core::Map::[]=}(#t3.{core::MapEntry::key}{dynamic}, #t3.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
     }
   }
@@ -111,16 +111,16 @@
     if (i > 0) ...y, // error
                   ^", null){(dynamic, dynamic) → void};
     if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = z.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic> #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = z.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t7 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t6.{core::Map::[]=}(#t7.{core::MapEntry::key}{dynamic}, #t7.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
       }
     }
     if(self::i.{core::num::>}(0){(core::num) → core::bool}) {
-      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = y!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic> #t8 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = y!.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t8 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
         #t6.{core::Map::[]=}(#t8.{core::MapEntry::key}{dynamic}, #t8.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect
index ccf9bc0..380d9ab 100644
--- a/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43495.dart.strong.transformed.expect
@@ -174,9 +174,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:8:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...a}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
           #t1.{core::Set::add}(#t3){(core::int) → core::bool};
@@ -188,9 +188,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:9:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...b}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t6 = #t5 as{TypeError,ForNonNullableByDefault} core::int;
           #t4.{core::Set::add}(#t6){(core::int) → core::bool};
@@ -202,9 +202,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:10:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...c}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t9 = #t8 as{TypeError,ForNonNullableByDefault} core::int;
           #t7.{core::Set::add}(#t9){(core::int) → core::bool};
@@ -227,9 +227,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:14:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...a}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t13 = #t12 as{TypeError,ForNonNullableByDefault} core::int;
           #t11.{core::Set::add}(#t13){(core::int) → core::bool};
@@ -241,9 +241,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:15:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...b}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t16 = #t15 as{TypeError,ForNonNullableByDefault} core::int;
           #t14.{core::Set::add}(#t16){(core::int) → core::bool};
@@ -255,9 +255,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:16:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...c}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::int;
           #t17.{core::Set::add}(#t19){(core::int) → core::bool};
@@ -273,15 +273,15 @@
   } =>#t20, block {
     final core::Set<core::int> #t21 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:18:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...a}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t22 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t22 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t23 = #t22 as{TypeError,ForNonNullableByDefault} core::int;
               #t21.{core::Set::add}(#t23){(core::int) → core::bool};
@@ -293,15 +293,15 @@
   } =>#t21, block {
     final core::Set<core::int> #t24 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:19:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...b}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t25 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t26 = #t25 as{TypeError,ForNonNullableByDefault} core::int;
               #t24.{core::Set::add}(#t26){(core::int) → core::bool};
@@ -313,15 +313,15 @@
   } =>#t24, block {
     final core::Set<core::int> #t27 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:20:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...c}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t28 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t28 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t29 = #t28 as{TypeError,ForNonNullableByDefault} core::int;
               #t27.{core::Set::add}(#t29){(core::int) → core::bool};
@@ -333,9 +333,9 @@
   } =>#t27, block {
     final core::Map<core::int, core::int> #t30 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t30.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...d}, // Error.
                                     ^", null){(core::int, core::int) → void};
@@ -346,9 +346,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...a}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::int;
           #t31.{core::Set::add}(#t33){(core::int) → core::bool};
@@ -360,9 +360,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...b}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::int;
           #t34.{core::Set::add}(#t36){(core::int) → core::bool};
@@ -374,9 +374,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...c}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t38 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t38 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t39 = #t38 as{TypeError,ForNonNullableByDefault} core::int;
           #t37.{core::Set::add}(#t39){(core::int) → core::bool};
@@ -393,9 +393,9 @@
     final core::Set<core::int> #t41 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t42 = a;
     if(!(#t42 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t42{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t43 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t42{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t43 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t44 = #t43 as{TypeError,ForNonNullableByDefault} core::int;
           #t41.{core::Set::add}(#t44){(core::int) → core::bool};
@@ -406,9 +406,9 @@
     final core::Set<core::int> #t45 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t46 = b;
     if(!(#t46 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t46{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t47 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t46{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t47 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t48 = #t47 as{TypeError,ForNonNullableByDefault} core::int;
           #t45.{core::Set::add}(#t48){(core::int) → core::bool};
@@ -419,9 +419,9 @@
     final core::Set<core::int> #t49 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t50 = c;
     if(!(#t50 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t50{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t51 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t50{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t51 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t52 = #t51 as{TypeError,ForNonNullableByDefault} core::int;
           #t49.{core::Set::add}(#t52){(core::int) → core::bool};
@@ -432,9 +432,9 @@
     final core::Map<core::int, core::int> #t53 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t54 = d;
     if(!(#t54 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t54{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t55 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t54{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t55 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t53.{core::Map::[]=}(#t55.{core::MapEntry::key}{core::int}, #t55.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -443,9 +443,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t57 = a;
       if(!(#t57 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t57{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t58 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t57{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t58 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t59 = #t58 as{TypeError,ForNonNullableByDefault} core::int;
             #t56.{core::Set::add}(#t59){(core::int) → core::bool};
@@ -458,9 +458,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t61 = b;
       if(!(#t61 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t62 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t62 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t63 = #t62 as{TypeError,ForNonNullableByDefault} core::int;
             #t60.{core::Set::add}(#t63){(core::int) → core::bool};
@@ -473,9 +473,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t65 = c;
       if(!(#t65 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t65{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t66 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t65{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t66 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
             #t64.{core::Set::add}(#t67){(core::int) → core::bool};
@@ -488,9 +488,9 @@
     if(condition) {
       final core::Map<core::int, core::int>? #t69 = d;
       if(!(#t69 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t69{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t70 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t69{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t70 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t68.{core::Map::[]=}(#t70.{core::MapEntry::key}{core::int}, #t70.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
@@ -498,15 +498,15 @@
   } =>#t68, block {
     final core::Set<core::int> #t71 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t72 = a;
           if(!(#t72 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t72{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t73 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t72{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t73 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t74 = #t73 as{TypeError,ForNonNullableByDefault} core::int;
                 #t71.{core::Set::add}(#t74){(core::int) → core::bool};
@@ -519,15 +519,15 @@
   } =>#t71, block {
     final core::Set<core::int> #t75 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t76 = b;
           if(!(#t76 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t76{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t77 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t76{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t77 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t78 = #t77 as{TypeError,ForNonNullableByDefault} core::int;
                 #t75.{core::Set::add}(#t78){(core::int) → core::bool};
@@ -540,15 +540,15 @@
   } =>#t75, block {
     final core::Set<core::int> #t79 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t80 = c;
           if(!(#t80 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t80{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t81 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t80{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t81 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t82 = #t81 as{TypeError,ForNonNullableByDefault} core::int;
                 #t79.{core::Set::add}(#t82){(core::int) → core::bool};
@@ -561,15 +561,15 @@
   } =>#t79, block {
     final core::Map<core::int, core::int> #t83 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Map<core::int, core::int>? #t84 = d;
           if(!(#t84 == null)) {
-            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t84{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::MapEntry<core::int, core::int> #t85 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t84{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::MapEntry<core::int, core::int> #t85 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
               #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}{core::int}, #t85.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
             }
           }
@@ -581,9 +581,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t87 = a;
       if(!(#t87 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t87{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t88 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t87{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t88 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t89 = #t88 as{TypeError,ForNonNullableByDefault} core::int;
             #t86.{core::Set::add}(#t89){(core::int) → core::bool};
@@ -596,9 +596,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t91 = b;
       if(!(#t91 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t91{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t92 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t91{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t92 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t93 = #t92 as{TypeError,ForNonNullableByDefault} core::int;
             #t90.{core::Set::add}(#t93){(core::int) → core::bool};
@@ -611,9 +611,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t95 = c;
       if(!(#t95 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t95{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t96 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t95{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t96 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t97 = #t96 as{TypeError,ForNonNullableByDefault} core::int;
             #t94.{core::Set::add}(#t97){(core::int) → core::bool};
@@ -626,9 +626,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Map<core::int, core::int>? #t99 = d;
       if(!(#t99 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t99{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t100 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t99{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t100 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}{core::int}, #t100.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
@@ -641,9 +641,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:50:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...x}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t102 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t102 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t103 = #t102 as{TypeError,ForNonNullableByDefault} core::int;
           #t101.{core::Set::add}(#t103){(core::int) → core::bool};
@@ -655,9 +655,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:51:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...y}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t105 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t105 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t106 = #t105 as{TypeError,ForNonNullableByDefault} core::int;
           #t104.{core::Set::add}(#t106){(core::int) → core::bool};
@@ -669,9 +669,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:52:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...z}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t108 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t108 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t109 = #t108 as{TypeError,ForNonNullableByDefault} core::int;
           #t107.{core::Set::add}(#t109){(core::int) → core::bool};
@@ -692,9 +692,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:56:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...x}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t112 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t112 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t113 = #t112 as{TypeError,ForNonNullableByDefault} core::int;
           #t111.{core::Set::add}(#t113){(core::int) → core::bool};
@@ -706,9 +706,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:57:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...y}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t115 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t115 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t116 = #t115 as{TypeError,ForNonNullableByDefault} core::int;
           #t114.{core::Set::add}(#t116){(core::int) → core::bool};
@@ -720,9 +720,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:58:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...z}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t118 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t118 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t119 = #t118 as{TypeError,ForNonNullableByDefault} core::int;
           #t117.{core::Set::add}(#t119){(core::int) → core::bool};
@@ -738,15 +738,15 @@
   } =>#t120, block {
     final core::Set<core::int> #t121 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:60:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...x}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t122 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t122 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t123 = #t122 as{TypeError,ForNonNullableByDefault} core::int;
               #t121.{core::Set::add}(#t123){(core::int) → core::bool};
@@ -758,15 +758,15 @@
   } =>#t121, block {
     final core::Set<core::int> #t124 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:61:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...y}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t125 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t125 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t126 = #t125 as{TypeError,ForNonNullableByDefault} core::int;
               #t124.{core::Set::add}(#t126){(core::int) → core::bool};
@@ -778,15 +778,15 @@
   } =>#t124, block {
     final core::Set<core::int> #t127 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:62:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...z}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t128 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t128 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t129 = #t128 as{TypeError,ForNonNullableByDefault} core::int;
               #t127.{core::Set::add}(#t129){(core::int) → core::bool};
@@ -798,9 +798,9 @@
   } =>#t127, block {
     final core::Map<core::int, core::int> #t130 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t130.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...w}, // Error.
                                     ^", null){(core::int, core::int) → void};
@@ -811,9 +811,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...x}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t132 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t132 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t133 = #t132 as{TypeError,ForNonNullableByDefault} core::int;
           #t131.{core::Set::add}(#t133){(core::int) → core::bool};
@@ -825,9 +825,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...y}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t135 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t135 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t136 = #t135 as{TypeError,ForNonNullableByDefault} core::int;
           #t134.{core::Set::add}(#t136){(core::int) → core::bool};
@@ -839,9 +839,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...z}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t138 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t138 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t139 = #t138 as{TypeError,ForNonNullableByDefault} core::int;
           #t137.{core::Set::add}(#t139){(core::int) → core::bool};
@@ -858,9 +858,9 @@
     final core::Set<core::int> #t141 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t142 = x;
     if(!(#t142 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t142{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t143 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t142{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t143 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t144 = #t143 as{TypeError,ForNonNullableByDefault} core::int;
           #t141.{core::Set::add}(#t144){(core::int) → core::bool};
@@ -871,9 +871,9 @@
     final core::Set<core::int> #t145 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t146 = y;
     if(!(#t146 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t146{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t147 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t146{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t147 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t148 = #t147 as{TypeError,ForNonNullableByDefault} core::int;
           #t145.{core::Set::add}(#t148){(core::int) → core::bool};
@@ -884,9 +884,9 @@
     final core::Set<core::int> #t149 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t150 = z;
     if(!(#t150 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t150{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t151 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t150{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t151 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t152 = #t151 as{TypeError,ForNonNullableByDefault} core::int;
           #t149.{core::Set::add}(#t152){(core::int) → core::bool};
@@ -897,9 +897,9 @@
     final core::Map<core::int, core::int> #t153 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t154 = w;
     if(!(#t154 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t154{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t155 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t154{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t155 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t153.{core::Map::[]=}(#t155.{core::MapEntry::key}{core::int}, #t155.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -908,9 +908,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t157 = x;
       if(!(#t157 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t157{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t158 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t157{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t158 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t159 = #t158 as{TypeError,ForNonNullableByDefault} core::int;
             #t156.{core::Set::add}(#t159){(core::int) → core::bool};
@@ -923,9 +923,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t161 = y;
       if(!(#t161 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t161{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t162 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t161{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t162 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t163 = #t162 as{TypeError,ForNonNullableByDefault} core::int;
             #t160.{core::Set::add}(#t163){(core::int) → core::bool};
@@ -938,9 +938,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t165 = z;
       if(!(#t165 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t165{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t166 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t165{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t166 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t167 = #t166 as{TypeError,ForNonNullableByDefault} core::int;
             #t164.{core::Set::add}(#t167){(core::int) → core::bool};
@@ -953,9 +953,9 @@
     if(condition) {
       final core::Map<core::int, core::int>? #t169 = w;
       if(!(#t169 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t169{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t170 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t169{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t170 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t168.{core::Map::[]=}(#t170.{core::MapEntry::key}{core::int}, #t170.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
@@ -963,15 +963,15 @@
   } =>#t168, block {
     final core::Set<core::int> #t171 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t172 = x;
           if(!(#t172 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t172{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t173 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t172{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t173 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t174 = #t173 as{TypeError,ForNonNullableByDefault} core::int;
                 #t171.{core::Set::add}(#t174){(core::int) → core::bool};
@@ -984,15 +984,15 @@
   } =>#t171, block {
     final core::Set<core::int> #t175 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t176 = y;
           if(!(#t176 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t176{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t177 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t176{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t177 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t178 = #t177 as{TypeError,ForNonNullableByDefault} core::int;
                 #t175.{core::Set::add}(#t178){(core::int) → core::bool};
@@ -1005,15 +1005,15 @@
   } =>#t175, block {
     final core::Set<core::int> #t179 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t180 = z;
           if(!(#t180 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t180{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t181 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t180{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t181 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t182 = #t181 as{TypeError,ForNonNullableByDefault} core::int;
                 #t179.{core::Set::add}(#t182){(core::int) → core::bool};
@@ -1026,15 +1026,15 @@
   } =>#t179, block {
     final core::Map<core::int, core::int> #t183 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Map<core::int, core::int>? #t184 = w;
           if(!(#t184 == null)) {
-            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t184{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::MapEntry<core::int, core::int> #t185 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t184{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::MapEntry<core::int, core::int> #t185 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
               #t183.{core::Map::[]=}(#t185.{core::MapEntry::key}{core::int}, #t185.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
             }
           }
@@ -1046,9 +1046,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t187 = x;
       if(!(#t187 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t187{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t188 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t187{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t188 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t189 = #t188 as{TypeError,ForNonNullableByDefault} core::int;
             #t186.{core::Set::add}(#t189){(core::int) → core::bool};
@@ -1061,9 +1061,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t191 = y;
       if(!(#t191 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t191{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t192 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t191{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t192 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t193 = #t192 as{TypeError,ForNonNullableByDefault} core::int;
             #t190.{core::Set::add}(#t193){(core::int) → core::bool};
@@ -1076,9 +1076,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t195 = z;
       if(!(#t195 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t195{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t196 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t195{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t196 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t197 = #t196 as{TypeError,ForNonNullableByDefault} core::int;
             #t194.{core::Set::add}(#t197){(core::int) → core::bool};
@@ -1091,9 +1091,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Map<core::int, core::int>? #t199 = w;
       if(!(#t199 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t199{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t200 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t199{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t200 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t198.{core::Map::[]=}(#t200.{core::MapEntry::key}{core::int}, #t200.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
diff --git a/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect
index ccf9bc0..380d9ab 100644
--- a/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue43495.dart.weak.transformed.expect
@@ -174,9 +174,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:8:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...a}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
           #t1.{core::Set::add}(#t3){(core::int) → core::bool};
@@ -188,9 +188,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:9:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...b}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t6 = #t5 as{TypeError,ForNonNullableByDefault} core::int;
           #t4.{core::Set::add}(#t6){(core::int) → core::bool};
@@ -202,9 +202,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:10:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...c}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t9 = #t8 as{TypeError,ForNonNullableByDefault} core::int;
           #t7.{core::Set::add}(#t9){(core::int) → core::bool};
@@ -227,9 +227,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:14:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...a}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t13 = #t12 as{TypeError,ForNonNullableByDefault} core::int;
           #t11.{core::Set::add}(#t13){(core::int) → core::bool};
@@ -241,9 +241,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:15:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...b}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t16 = #t15 as{TypeError,ForNonNullableByDefault} core::int;
           #t14.{core::Set::add}(#t16){(core::int) → core::bool};
@@ -255,9 +255,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:16:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...c}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::int;
           #t17.{core::Set::add}(#t19){(core::int) → core::bool};
@@ -273,15 +273,15 @@
   } =>#t20, block {
     final core::Set<core::int> #t21 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:18:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...a}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t22 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t22 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t23 = #t22 as{TypeError,ForNonNullableByDefault} core::int;
               #t21.{core::Set::add}(#t23){(core::int) → core::bool};
@@ -293,15 +293,15 @@
   } =>#t21, block {
     final core::Set<core::int> #t24 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:19:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...b}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t25 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t26 = #t25 as{TypeError,ForNonNullableByDefault} core::int;
               #t24.{core::Set::add}(#t26){(core::int) → core::bool};
@@ -313,15 +313,15 @@
   } =>#t24, block {
     final core::Set<core::int> #t27 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:20:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...c}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t28 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t28 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t29 = #t28 as{TypeError,ForNonNullableByDefault} core::int;
               #t27.{core::Set::add}(#t29){(core::int) → core::bool};
@@ -333,9 +333,9 @@
   } =>#t27, block {
     final core::Map<core::int, core::int> #t30 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t30.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:21:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...d}, // Error.
                                     ^", null){(core::int, core::int) → void};
@@ -346,9 +346,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...a}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::int;
           #t31.{core::Set::add}(#t33){(core::int) → core::bool};
@@ -360,9 +360,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...b}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::int;
           #t34.{core::Set::add}(#t36){(core::int) → core::bool};
@@ -374,9 +374,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...c}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t38 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t38 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t39 = #t38 as{TypeError,ForNonNullableByDefault} core::int;
           #t37.{core::Set::add}(#t39){(core::int) → core::bool};
@@ -393,9 +393,9 @@
     final core::Set<core::int> #t41 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t42 = a;
     if(!(#t42 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t42{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t43 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t42{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t43 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t44 = #t43 as{TypeError,ForNonNullableByDefault} core::int;
           #t41.{core::Set::add}(#t44){(core::int) → core::bool};
@@ -406,9 +406,9 @@
     final core::Set<core::int> #t45 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t46 = b;
     if(!(#t46 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t46{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t47 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t46{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t47 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t48 = #t47 as{TypeError,ForNonNullableByDefault} core::int;
           #t45.{core::Set::add}(#t48){(core::int) → core::bool};
@@ -419,9 +419,9 @@
     final core::Set<core::int> #t49 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t50 = c;
     if(!(#t50 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t50{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t51 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t50{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t51 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t52 = #t51 as{TypeError,ForNonNullableByDefault} core::int;
           #t49.{core::Set::add}(#t52){(core::int) → core::bool};
@@ -432,9 +432,9 @@
     final core::Map<core::int, core::int> #t53 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t54 = d;
     if(!(#t54 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t54{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t55 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t54{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t55 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t53.{core::Map::[]=}(#t55.{core::MapEntry::key}{core::int}, #t55.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -443,9 +443,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t57 = a;
       if(!(#t57 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t57{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t58 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t57{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t58 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t59 = #t58 as{TypeError,ForNonNullableByDefault} core::int;
             #t56.{core::Set::add}(#t59){(core::int) → core::bool};
@@ -458,9 +458,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t61 = b;
       if(!(#t61 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t62 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t62 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t63 = #t62 as{TypeError,ForNonNullableByDefault} core::int;
             #t60.{core::Set::add}(#t63){(core::int) → core::bool};
@@ -473,9 +473,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t65 = c;
       if(!(#t65 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t65{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t66 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t65{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t66 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
             #t64.{core::Set::add}(#t67){(core::int) → core::bool};
@@ -488,9 +488,9 @@
     if(condition) {
       final core::Map<core::int, core::int>? #t69 = d;
       if(!(#t69 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t69{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t70 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t69{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t70 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t68.{core::Map::[]=}(#t70.{core::MapEntry::key}{core::int}, #t70.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
@@ -498,15 +498,15 @@
   } =>#t68, block {
     final core::Set<core::int> #t71 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t72 = a;
           if(!(#t72 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t72{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t73 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t72{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t73 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t74 = #t73 as{TypeError,ForNonNullableByDefault} core::int;
                 #t71.{core::Set::add}(#t74){(core::int) → core::bool};
@@ -519,15 +519,15 @@
   } =>#t71, block {
     final core::Set<core::int> #t75 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t76 = b;
           if(!(#t76 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t76{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t77 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t76{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t77 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t78 = #t77 as{TypeError,ForNonNullableByDefault} core::int;
                 #t75.{core::Set::add}(#t78){(core::int) → core::bool};
@@ -540,15 +540,15 @@
   } =>#t75, block {
     final core::Set<core::int> #t79 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t80 = c;
           if(!(#t80 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t80{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t81 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t80{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t81 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t82 = #t81 as{TypeError,ForNonNullableByDefault} core::int;
                 #t79.{core::Set::add}(#t82){(core::int) → core::bool};
@@ -561,15 +561,15 @@
   } =>#t79, block {
     final core::Map<core::int, core::int> #t83 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Map<core::int, core::int>? #t84 = d;
           if(!(#t84 == null)) {
-            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t84{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::MapEntry<core::int, core::int> #t85 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t84{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::MapEntry<core::int, core::int> #t85 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
               #t83.{core::Map::[]=}(#t85.{core::MapEntry::key}{core::int}, #t85.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
             }
           }
@@ -581,9 +581,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t87 = a;
       if(!(#t87 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t87{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t88 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t87{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t88 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t89 = #t88 as{TypeError,ForNonNullableByDefault} core::int;
             #t86.{core::Set::add}(#t89){(core::int) → core::bool};
@@ -596,9 +596,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t91 = b;
       if(!(#t91 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t91{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t92 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t91{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t92 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t93 = #t92 as{TypeError,ForNonNullableByDefault} core::int;
             #t90.{core::Set::add}(#t93){(core::int) → core::bool};
@@ -611,9 +611,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t95 = c;
       if(!(#t95 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t95{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t96 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t95{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t96 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t97 = #t96 as{TypeError,ForNonNullableByDefault} core::int;
             #t94.{core::Set::add}(#t97){(core::int) → core::bool};
@@ -626,9 +626,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Map<core::int, core::int>? #t99 = d;
       if(!(#t99 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t99{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t100 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t99{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t100 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t98.{core::Map::[]=}(#t100.{core::MapEntry::key}{core::int}, #t100.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
@@ -641,9 +641,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:50:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...x}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t102 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t102 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t103 = #t102 as{TypeError,ForNonNullableByDefault} core::int;
           #t101.{core::Set::add}(#t103){(core::int) → core::bool};
@@ -655,9 +655,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:51:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...y}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t105 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t105 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t106 = #t105 as{TypeError,ForNonNullableByDefault} core::int;
           #t104.{core::Set::add}(#t106){(core::int) → core::bool};
@@ -669,9 +669,9 @@
     {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:52:9: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {...z}, // Error.
-        ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t108 = :sync-for-iterator.{core::Iterator::current};
+        ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t108 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t109 = #t108 as{TypeError,ForNonNullableByDefault} core::int;
           #t107.{core::Set::add}(#t109){(core::int) → core::bool};
@@ -692,9 +692,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:56:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...x}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t112 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t112 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t113 = #t112 as{TypeError,ForNonNullableByDefault} core::int;
           #t111.{core::Set::add}(#t113){(core::int) → core::bool};
@@ -706,9 +706,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:57:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...y}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t115 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t115 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t116 = #t115 as{TypeError,ForNonNullableByDefault} core::int;
           #t114.{core::Set::add}(#t116){(core::int) → core::bool};
@@ -720,9 +720,9 @@
     if(condition) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:58:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {if (condition) ...z}, // Error.
-                       ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t118 = :sync-for-iterator.{core::Iterator::current};
+                       ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t118 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t119 = #t118 as{TypeError,ForNonNullableByDefault} core::int;
           #t117.{core::Set::add}(#t119){(core::int) → core::bool};
@@ -738,15 +738,15 @@
   } =>#t120, block {
     final core::Set<core::int> #t121 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:60:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...x}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t122 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t122 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t123 = #t122 as{TypeError,ForNonNullableByDefault} core::int;
               #t121.{core::Set::add}(#t123){(core::int) → core::bool};
@@ -758,15 +758,15 @@
   } =>#t121, block {
     final core::Set<core::int> #t124 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:61:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...y}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t125 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t125 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t126 = #t125 as{TypeError,ForNonNullableByDefault} core::int;
               #t124.{core::Set::add}(#t126){(core::int) → core::bool};
@@ -778,15 +778,15 @@
   } =>#t124, block {
     final core::Set<core::int> #t127 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:62:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...z}, // Error.
-                                    ^".{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            final dynamic #t128 = :sync-for-iterator.{core::Iterator::current};
+                                    ^".{core::Iterable::iterator}{core::Iterator<Never>};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            final dynamic #t128 = :sync-for-iterator.{core::Iterator::current}{Never};
             {
               final core::int #t129 = #t128 as{TypeError,ForNonNullableByDefault} core::int;
               #t127.{core::Set::add}(#t129){(core::int) → core::bool};
@@ -798,9 +798,9 @@
   } =>#t127, block {
     final core::Map<core::int, core::int> #t130 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         #t130.{core::Map::[]=}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:63:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (dynamic e in iterable) ...w}, // Error.
                                     ^", null){(core::int, core::int) → void};
@@ -811,9 +811,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...x}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t132 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t132 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t133 = #t132 as{TypeError,ForNonNullableByDefault} core::int;
           #t131.{core::Set::add}(#t133){(core::int) → core::bool};
@@ -825,9 +825,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...y}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t135 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t135 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t136 = #t135 as{TypeError,ForNonNullableByDefault} core::int;
           #t134.{core::Set::add}(#t136){(core::int) → core::bool};
@@ -839,9 +839,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
     {for (int i = 0; i < 42; ++i) ...z}, // Error.
-                                     ^".{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t138 = :sync-for-iterator.{core::Iterator::current};
+                                     ^".{core::Iterable::iterator}{core::Iterator<Never>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t138 = :sync-for-iterator.{core::Iterator::current}{Never};
         {
           final core::int #t139 = #t138 as{TypeError,ForNonNullableByDefault} core::int;
           #t137.{core::Set::add}(#t139){(core::int) → core::bool};
@@ -858,9 +858,9 @@
     final core::Set<core::int> #t141 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t142 = x;
     if(!(#t142 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t142{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t143 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t142{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t143 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t144 = #t143 as{TypeError,ForNonNullableByDefault} core::int;
           #t141.{core::Set::add}(#t144){(core::int) → core::bool};
@@ -871,9 +871,9 @@
     final core::Set<core::int> #t145 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t146 = y;
     if(!(#t146 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t146{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t147 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t146{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t147 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t148 = #t147 as{TypeError,ForNonNullableByDefault} core::int;
           #t145.{core::Set::add}(#t148){(core::int) → core::bool};
@@ -884,9 +884,9 @@
     final core::Set<core::int> #t149 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t150 = z;
     if(!(#t150 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t150{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t151 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t150{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t151 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t152 = #t151 as{TypeError,ForNonNullableByDefault} core::int;
           #t149.{core::Set::add}(#t152){(core::int) → core::bool};
@@ -897,9 +897,9 @@
     final core::Map<core::int, core::int> #t153 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t154 = w;
     if(!(#t154 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t154{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t155 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t154{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t155 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t153.{core::Map::[]=}(#t155.{core::MapEntry::key}{core::int}, #t155.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -908,9 +908,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t157 = x;
       if(!(#t157 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t157{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t158 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t157{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t158 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t159 = #t158 as{TypeError,ForNonNullableByDefault} core::int;
             #t156.{core::Set::add}(#t159){(core::int) → core::bool};
@@ -923,9 +923,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t161 = y;
       if(!(#t161 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t161{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t162 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t161{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t162 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t163 = #t162 as{TypeError,ForNonNullableByDefault} core::int;
             #t160.{core::Set::add}(#t163){(core::int) → core::bool};
@@ -938,9 +938,9 @@
     if(condition) {
       final core::Iterable<dynamic>? #t165 = z;
       if(!(#t165 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t165{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t166 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t165{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t166 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t167 = #t166 as{TypeError,ForNonNullableByDefault} core::int;
             #t164.{core::Set::add}(#t167){(core::int) → core::bool};
@@ -953,9 +953,9 @@
     if(condition) {
       final core::Map<core::int, core::int>? #t169 = w;
       if(!(#t169 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t169{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t170 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t169{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t170 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t168.{core::Map::[]=}(#t170.{core::MapEntry::key}{core::int}, #t170.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
@@ -963,15 +963,15 @@
   } =>#t168, block {
     final core::Set<core::int> #t171 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t172 = x;
           if(!(#t172 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t172{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t173 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t172{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t173 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t174 = #t173 as{TypeError,ForNonNullableByDefault} core::int;
                 #t171.{core::Set::add}(#t174){(core::int) → core::bool};
@@ -984,15 +984,15 @@
   } =>#t171, block {
     final core::Set<core::int> #t175 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t176 = y;
           if(!(#t176 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t176{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t177 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t176{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t177 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t178 = #t177 as{TypeError,ForNonNullableByDefault} core::int;
                 #t175.{core::Set::add}(#t178){(core::int) → core::bool};
@@ -1005,15 +1005,15 @@
   } =>#t175, block {
     final core::Set<core::int> #t179 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Iterable<dynamic>? #t180 = z;
           if(!(#t180 == null)) {
-            core::Iterator<dynamic> :sync-for-iterator = #t180{core::Iterable<dynamic>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final dynamic #t181 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<dynamic> :sync-for-iterator = #t180{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final dynamic #t181 = :sync-for-iterator.{core::Iterator::current}{dynamic};
               {
                 final core::int #t182 = #t181 as{TypeError,ForNonNullableByDefault} core::int;
                 #t179.{core::Set::add}(#t182){(core::int) → core::bool};
@@ -1026,15 +1026,15 @@
   } =>#t179, block {
     final core::Map<core::int, core::int> #t183 = <core::int, core::int>{};
     {
-      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::Map<core::int, core::int>? #t184 = w;
           if(!(#t184 == null)) {
-            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t184{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-            for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-              final core::MapEntry<core::int, core::int> #t185 = :sync-for-iterator.{core::Iterator::current};
+            core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t184{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+            for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+              final core::MapEntry<core::int, core::int> #t185 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
               #t183.{core::Map::[]=}(#t185.{core::MapEntry::key}{core::int}, #t185.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
             }
           }
@@ -1046,9 +1046,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t187 = x;
       if(!(#t187 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t187{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t188 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t187{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t188 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t189 = #t188 as{TypeError,ForNonNullableByDefault} core::int;
             #t186.{core::Set::add}(#t189){(core::int) → core::bool};
@@ -1061,9 +1061,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t191 = y;
       if(!(#t191 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t191{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t192 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t191{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t192 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t193 = #t192 as{TypeError,ForNonNullableByDefault} core::int;
             #t190.{core::Set::add}(#t193){(core::int) → core::bool};
@@ -1076,9 +1076,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Iterable<dynamic>? #t195 = z;
       if(!(#t195 == null)) {
-        core::Iterator<dynamic> :sync-for-iterator = #t195{core::Iterable<dynamic>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t196 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic> :sync-for-iterator = #t195{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t196 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             final core::int #t197 = #t196 as{TypeError,ForNonNullableByDefault} core::int;
             #t194.{core::Set::add}(#t197){(core::int) → core::bool};
@@ -1091,9 +1091,9 @@
     for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
       final core::Map<core::int, core::int>? #t199 = w;
       if(!(#t199 == null)) {
-        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t199{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<core::int, core::int> #t200 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t199{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<core::int, core::int> #t200 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
           #t198.{core::Map::[]=}(#t200.{core::MapEntry::key}{core::int}, #t200.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
         }
       }
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
index e08b045..122e031 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
@@ -40,7 +40,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
index e08b045..122e031 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
@@ -40,7 +40,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
index 303c03a..18efa67 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
@@ -109,9 +109,9 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String s = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator}{core::Iterator<core::String>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String s = :sync-for-iterator.{core::Iterator::current}{core::String};
       {
         core::print(s);
       }
@@ -146,9 +146,9 @@
             #L2:
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::String s = :for-iterator.{asy::_StreamIterator::current};
+                core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
                 {
                   core::print(s);
                 }
@@ -157,8 +157,8 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
+              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -173,7 +173,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -225,7 +225,7 @@
               }
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
             :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-            :async_op.call();
+            :async_op(){() → dynamic};
             :is_sync = true;
             return :async_future;
           };
@@ -239,7 +239,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
index 303c03a..18efa67 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
@@ -109,9 +109,9 @@
     core::print("baz");
   }
   {
-    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::String s = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("baz").{core::Iterable::iterator}{core::Iterator<core::String>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::String s = :sync-for-iterator.{core::Iterator::current}{core::String};
       {
         core::print(s);
       }
@@ -146,9 +146,9 @@
             #L2:
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                core::String s = :for-iterator.{asy::_StreamIterator::current};
+                core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
                 {
                   core::print(s);
                 }
@@ -157,8 +157,8 @@
                 break #L2;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
+              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -173,7 +173,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -225,7 +225,7 @@
               }
             :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
             :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-            :async_op.call();
+            :async_op(){() → dynamic};
             :is_sync = true;
             return :async_future;
           };
@@ -239,7 +239,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
index f385f6f..2a9f5d7 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
@@ -35,7 +35,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -65,7 +65,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -94,7 +94,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -136,7 +136,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }, (core::Object e, core::StackTrace s) → void {
@@ -153,7 +153,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
index f385f6f..2a9f5d7 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
@@ -35,7 +35,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -65,7 +65,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -94,7 +94,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -136,7 +136,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() → dynamic};
           :is_sync = true;
           return :async_future;
         }, (core::Object e, core::StackTrace s) → void {
@@ -153,7 +153,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
index 809f8b6..702dfef 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
@@ -113,7 +113,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -137,7 +137,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -166,7 +166,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -190,7 +190,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -214,7 +214,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -241,7 +241,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -265,7 +265,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -296,15 +296,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
   return :controller_stream;
 }
 static method caseReturn1(self::Enum e) → self::Enum {
@@ -381,7 +381,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -405,7 +405,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -434,7 +434,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -458,7 +458,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -482,7 +482,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -509,7 +509,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -533,7 +533,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -564,15 +564,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
     return :controller_stream;
   }
   function caseReturn1(self::Enum e) → self::Enum {
@@ -642,7 +642,7 @@
 Evaluated: MethodInvocation @ org-dartlang-testcase:///return_null.dart:75:14 -> BoolConstant(true)
 Evaluated: VariableGet @ org-dartlang-testcase:///return_null.dart:75:14 -> NullConstant(null)
 Evaluated: VariableGet @ org-dartlang-testcase:///return_null.dart:75:14 -> NullConstant(null)
-Extra constant evaluation: evaluated: 394, effectively constant: 12
+Extra constant evaluation: evaluated: 380, effectively constant: 12
 
 
 Constructor coverage from constants:
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
index 0faf793..51a7d44 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
@@ -114,7 +114,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -138,7 +138,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -167,7 +167,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -191,7 +191,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -215,7 +215,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -242,7 +242,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -266,7 +266,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -297,15 +297,15 @@
         return;
       }
       on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+        :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
-      :controller.{asy::_AsyncStarStreamController::close}();
+      :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
   :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
   return :controller_stream;
 }
 static method caseReturn1(self::Enum e) → self::Enum {
@@ -385,7 +385,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -409,7 +409,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -438,7 +438,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -462,7 +462,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -486,7 +486,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -513,7 +513,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -537,7 +537,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -568,15 +568,15 @@
           return;
         }
         on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
-          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+          :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
         }
       finally {
-        :controller.{asy::_AsyncStarStreamController::close}();
+        :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
     :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+    :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
     return :controller_stream;
   }
   function caseReturn1(self::Enum e) → self::Enum {
diff --git a/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect
index af8e07c..c45184d 100644
--- a/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/spread_if_null.dart.strong.transformed.expect
@@ -68,9 +68,9 @@
     final core::Set<core::int> #t17 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t18 = set;
     if(!(#t18 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t18{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t18{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t19 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t20 = #t19 as{TypeError,ForNonNullableByDefault} core::int;
           #t17.{core::Set::add}(#t20){(core::int) → core::bool};
@@ -103,9 +103,9 @@
     #t25.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t26 = map;
     if(!(#t26 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t26{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t27 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t26{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t27 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}{core::int}, #t27.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -117,9 +117,9 @@
     #t28.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t29 = null;
     if(!(#t29 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t29{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t30 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t29{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t30 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t28.{core::Map::[]=}(#t30.{core::MapEntry::key}{core::int}, #t30.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -129,9 +129,9 @@
     final core::Map<core::int, core::int> #t31 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t32 = map;
     if(!(#t32 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t32{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t33 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t32{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t33 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t31.{core::Map::[]=}(#t33.{core::MapEntry::key}{core::int}, #t33.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -142,9 +142,9 @@
     #t34.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t35 = map;
     if(!(#t35 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t35{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t36 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t35{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t36 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t34.{core::Map::[]=}(#t36.{core::MapEntry::key}{core::int}, #t36.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -156,9 +156,9 @@
     #t37.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t38 = null;
     if(!(#t38 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t38{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t39 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t38{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t39 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t37.{core::Map::[]=}(#t39.{core::MapEntry::key}{core::int}, #t39.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect
index af8e07c..c45184d 100644
--- a/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/spread_if_null.dart.weak.transformed.expect
@@ -68,9 +68,9 @@
     final core::Set<core::int> #t17 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t18 = set;
     if(!(#t18 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t18{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t18{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t19 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t20 = #t19 as{TypeError,ForNonNullableByDefault} core::int;
           #t17.{core::Set::add}(#t20){(core::int) → core::bool};
@@ -103,9 +103,9 @@
     #t25.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t26 = map;
     if(!(#t26 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t26{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t27 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t26{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t27 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t25.{core::Map::[]=}(#t27.{core::MapEntry::key}{core::int}, #t27.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -117,9 +117,9 @@
     #t28.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t29 = null;
     if(!(#t29 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t29{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t30 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t29{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t30 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t28.{core::Map::[]=}(#t30.{core::MapEntry::key}{core::int}, #t30.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -129,9 +129,9 @@
     final core::Map<core::int, core::int> #t31 = <core::int, core::int>{};
     final core::Map<core::int, core::int>? #t32 = map;
     if(!(#t32 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t32{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t33 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t32{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t33 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t31.{core::Map::[]=}(#t33.{core::MapEntry::key}{core::int}, #t33.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -142,9 +142,9 @@
     #t34.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t35 = map;
     if(!(#t35 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t35{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t36 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t35{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t36 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t34.{core::Map::[]=}(#t36.{core::MapEntry::key}{core::int}, #t36.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
@@ -156,9 +156,9 @@
     #t37.{core::Map::[]=}(2, 2){(core::int, core::int) → void};
     final core::Map<core::int, core::int>? #t38 = null;
     if(!(#t38 == null)) {
-      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t38{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int, core::int> #t39 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t38{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::int> #t39 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
         #t37.{core::Map::[]=}(#t39.{core::MapEntry::key}{core::int}, #t39.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
index a208e0d..68f5e76 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect
@@ -147,9 +147,9 @@
     final core::Set<core::String> #t7 = new col::_CompactLinkedHashSet::•<core::String>();
     final core::Iterable<dynamic>? #t8 = l;
     if(!(#t8 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t8{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t8{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::String #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::String;
           #t7.{core::Set::add}(#t10){(core::String) → core::bool};
@@ -167,9 +167,9 @@
     final core::Map<core::String, core::int> #t13 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t14 = m;
     if(!(#t14 == null)) {
-      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t14{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t14{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
         #t13.{core::Map::[]=}(#t15.{core::MapEntry::key}{core::String}, #t15.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
       }
     }
@@ -178,9 +178,9 @@
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
     if(!(#t17 == null)) {
-      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
         #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}{core::String}, #t18.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
index a208e0d..68f5e76 100644
--- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect
@@ -147,9 +147,9 @@
     final core::Set<core::String> #t7 = new col::_CompactLinkedHashSet::•<core::String>();
     final core::Iterable<dynamic>? #t8 = l;
     if(!(#t8 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t8{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t8{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::String #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::String;
           #t7.{core::Set::add}(#t10){(core::String) → core::bool};
@@ -167,9 +167,9 @@
     final core::Map<core::String, core::int> #t13 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t14 = m;
     if(!(#t14 == null)) {
-      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t14{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t14{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
         #t13.{core::Map::[]=}(#t15.{core::MapEntry::key}{core::String}, #t15.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
       }
     }
@@ -178,9 +178,9 @@
     final core::Map<core::String, core::int> #t16 = <core::String, core::int>{};
     final core::Map<core::String, core::int>? #t17 = m;
     if(!(#t17 == null)) {
-      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t17{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t18 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
         #t16.{core::Map::[]=}(#t18.{core::MapEntry::key}{core::String}, #t18.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
       }
     }
diff --git a/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.strong.transformed.expect
index 3a904fc..c007963 100644
--- a/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.strong.transformed.expect
@@ -571,9 +571,9 @@
 static method foo6a() → dynamic {
   (self::A<Never>) → self::A<dynamic> x;
   {
-    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator}{core::Iterator<(self::A<Never>) → self::A<dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current}{(self::A<Never>) → self::A<dynamic>};
       {}
     }
   }
@@ -587,9 +587,9 @@
 static method foo6b() → dynamic {
   (self::A<Never>) → self::A<dynamic> x;
   {
-    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator}{core::Iterator<(self::A<Never>) → self::A<dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current}{(self::A<Never>) → self::A<dynamic>};
       {}
     }
   }
@@ -610,9 +610,9 @@
 static method bar6() → dynamic {
   self::B<core::num> x;
   {
-    core::Iterator<self::B<core::num>> :sync-for-iterator = core::_GrowableList::•<self::B<core::num>>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::B<core::num> x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B<core::num>> :sync-for-iterator = core::_GrowableList::•<self::B<core::num>>(0).{core::Iterable::iterator}{core::Iterator<self::B<core::num>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::B<core::num> x = :sync-for-iterator.{core::Iterator::current}{self::B<core::num>};
       {}
     }
   }
diff --git a/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.weak.transformed.expect
index 3a904fc..c007963 100644
--- a/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/super_bounded_hint.dart.weak.transformed.expect
@@ -571,9 +571,9 @@
 static method foo6a() → dynamic {
   (self::A<Never>) → self::A<dynamic> x;
   {
-    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator}{core::Iterator<(self::A<Never>) → self::A<dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current}{(self::A<Never>) → self::A<dynamic>};
       {}
     }
   }
@@ -587,9 +587,9 @@
 static method foo6b() → dynamic {
   (self::A<Never>) → self::A<dynamic> x;
   {
-    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<(self::A<Never>) → self::A<dynamic>> :sync-for-iterator = core::_GrowableList::•<(self::A<Never>) → self::A<dynamic>>(0).{core::Iterable::iterator}{core::Iterator<(self::A<Never>) → self::A<dynamic>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      (self::A<Never>) → self::A<dynamic> x = :sync-for-iterator.{core::Iterator::current}{(self::A<Never>) → self::A<dynamic>};
       {}
     }
   }
@@ -610,9 +610,9 @@
 static method bar6() → dynamic {
   self::B<core::num> x;
   {
-    core::Iterator<self::B<core::num>> :sync-for-iterator = core::_GrowableList::•<self::B<core::num>>(0).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::B<core::num> x = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B<core::num>> :sync-for-iterator = core::_GrowableList::•<self::B<core::num>>(0).{core::Iterable::iterator}{core::Iterator<self::B<core::num>>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::B<core::num> x = :sync-for-iterator.{core::Iterator::current}{self::B<core::num>};
       {}
     }
   }
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect
index faea41f..96460c4 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect
@@ -24,7 +24,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -49,7 +49,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -81,7 +81,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect
index db78f69..dcba0f6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect
@@ -30,7 +30,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op.call();
+    :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   };
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
index 61aa1eb..8560742 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
@@ -39,9 +39,9 @@
 static method main() → dynamic {
   core::List<self::Base*>* list = core::_GrowableList::_literal2<self::Base*>(new self::Me::•(), new self::You::•());
   {
-    core::Iterator<self::Base*>* :sync-for-iterator = list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::Base* baba = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::Base*>* :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<self::Base*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::Base* baba = :sync-for-iterator.{core::Iterator::current}{self::Base*};
       {
         baba.{self::Base::push} = 0;
         baba.{self::Base::float} = 1;
diff --git a/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect
index 533f9ab..ad7b018 100644
--- a/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000004.dart.weak.transformed.expect
@@ -9,9 +9,9 @@
 static method fact4() → dynamic {
   core::int* f = 1;
   {
-    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal4<core::int*>(1, 2, 3, 4).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int* n = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal4<core::int*>(1, 2, 3, 4).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int* n = :sync-for-iterator.{core::Iterator::current}{core::int*};
       {
         f = f.{core::num::*}(n){(core::num*) →* core::int*};
       }
@@ -23,9 +23,9 @@
   core::int* f = 1;
   dynamic n;
   {
-    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal5<dynamic>(1, 2, 3, 4, 5).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal5<dynamic>(1, 2, 3, 4, 5).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         n = #t1;
         f = f.{core::num::*}(n as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
@@ -37,9 +37,9 @@
 static method fact6() → dynamic {
   core::int* f = 1;
   {
-    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal6<dynamic>(1, 2, 3, 4, 5, 6).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal6<dynamic>(1, 2, 3, 4, 5, 6).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         self::global = #t2;
         f = f.{core::num::*}(self::global as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*} as{TypeError} core::int*;
diff --git a/pkg/front_end/testcases/rasta/issue_000042.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000042.dart.weak.transformed.expect
index 5561da6..590cdfe 100644
--- a/pkg/front_end/testcases/rasta/issue_000042.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000042.dart.weak.transformed.expect
@@ -29,9 +29,9 @@
   for (var x, y in []) {}
        ^^^";
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/rasta/issue_000042.dart:6:8: Error: A for-in loop can't have more than one loop variable.
   for (var x, y in []) {}
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect
index c8cfe5a..ce85d90 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.weak.transformed.expect
@@ -94,9 +94,9 @@
     ;
   method it1(dynamic x) → dynamic {
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:11:10: Error: The setter 'key' isn't defined for the class 'Fisk'.
  - 'Fisk' is from 'pkg/front_end/testcases/rasta/unresolved_for_in.dart'.
@@ -112,9 +112,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:14:10: Error: Can't assign to a type literal.
     for (Fisk in x) {
@@ -124,9 +124,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t3 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t3 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:17:10: Error: A prefix can't be used as an expression.
     for (collection in x) {
@@ -138,9 +138,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:20:10: Error: Can't assign to a type literal.
     for (VoidFunction in x) {
@@ -154,9 +154,9 @@
     for (1 in x) {
          ^";
       {
-        core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<dynamic>* :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{dynamic};
           {
             invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
     for (1 in x) {
@@ -186,9 +186,9 @@
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:31:8: Error: Setter not found: 'key'.
   for (key in arguments) {
@@ -200,9 +200,9 @@
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:34:8: Error: Can't assign to a type literal.
   for (Fisk in arguments) {
@@ -212,9 +212,9 @@
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:37:8: Error: A prefix can't be used as an expression.
   for (collection in arguments) {
@@ -226,9 +226,9 @@
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:40:8: Error: Can't assign to a type literal.
   for (VoidFunction in arguments) {
@@ -242,9 +242,9 @@
   for (1 in arguments) {
        ^";
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (arguments as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
diff --git a/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect
index 5b90ebe..d3211c4 100644
--- a/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect
@@ -82,7 +82,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -109,7 +109,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -140,7 +140,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
index 6ae56e4..8e89457 100644
--- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
@@ -58,7 +58,7 @@
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-          :async_op.call();
+          :async_op(){() →* dynamic};
           :is_sync = true;
           return :async_future;
         }
@@ -78,7 +78,7 @@
               try {
                 #L3:
                 {
-                  if(:controller.{asy::_AsyncStarStreamController::add}(42))
+                  if(:controller.{asy::_AsyncStarStreamController::add}(42){(dynamic) → core::bool})
                     return null;
                   else
                     [yield] null;
@@ -86,15 +86,15 @@
                 return;
               }
               on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
-                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace);
+                :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
               }
             finally {
-              :controller.{asy::_AsyncStarStreamController::close}();
+              :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
             }
           :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
           :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
           :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
-          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+          :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
           return :controller_stream;
         }
         {
@@ -104,9 +104,9 @@
             #L4:
             while (true) {
               dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error, :async_op) in null;
               if(_in::unsafeCast<core::bool>(:result)) {
-                dynamic x = :for-iterator.{asy::_StreamIterator::current};
+                dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
                 {
                   core::print(x);
                 }
@@ -115,8 +115,8 @@
                 break #L4;
             }
           finally
-            if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
+              [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -138,9 +138,9 @@
           return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
         }
         {
-          core::Iterator<dynamic>* :sync-for-iterator = ((f_sync_star(){() →* core::int*} as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-          for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-            dynamic x = :sync-for-iterator.{core::Iterator::current};
+          core::Iterator<dynamic>* :sync-for-iterator = ((f_sync_star(){() →* core::int*} as dynamic) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+          for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+            dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
             {
               core::print(x);
             }
@@ -155,7 +155,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect
index d754933..8aff3a5 100644
--- a/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_42423.dart.weak.transformed.expect
@@ -11,9 +11,9 @@
     final core::Set<core::int*>* #t1 = new col::_CompactLinkedHashSet::•<core::int*>();
     final core::Iterable<dynamic>* #t2 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t2 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t3 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t2.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t3 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t4 = #t3 as{TypeError} core::int*;
           #t1.{core::Set::add}(#t4){(core::int*) →* core::bool*};
@@ -27,9 +27,9 @@
     final core::List<core::int*>* #t5 = core::_GrowableList::•<core::int*>(0);
     final core::Iterable<dynamic>* #t6 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t6 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t6.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t6.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t8 = #t7 as{TypeError} core::int*;
           #t5.{core::List::add}(#t8){(core::int*) →* void};
@@ -43,9 +43,9 @@
     final core::Map<core::int*, core::int*>* #t9 = <core::int*, core::int*>{};
     final core::Map<dynamic, dynamic>* #t10 = stringMap as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*;
     if(!(#t10 == null)) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t10.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t11 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t10.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t11 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
         {
           final core::int* #t12 = #t11.{core::MapEntry::key}{dynamic} as{TypeError} core::int*;
           final core::int* #t13 = #t11.{core::MapEntry::value}{dynamic} as{TypeError} core::int*;
diff --git a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.weak.transformed.expect
index 3a5d78d..db63c41 100644
--- a/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/for_in_call_kinds.dart.weak.transformed.expect
@@ -13,63 +13,63 @@
   method test() → void {
     dynamic localVar;
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t1 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::topLevel = #t1;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::topLevelSetter = #t2;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t3 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t3 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::C::staticField = #t3;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           self::C::staticSetter = #t4;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t5 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           this.{self::C::instanceField} = #t5;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           this.{self::C::instanceSetter} = #t6;
         }
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           localVar = #t7;
         }
diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect
index 5ff864f..49295eb 100644
--- a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect
@@ -116,7 +116,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -143,7 +143,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -172,7 +172,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -201,7 +201,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -236,7 +236,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -269,7 +269,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op.call();
+  :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect
index 27a662d..371f045 100644
--- a/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/fold_initial.dart.weak.transformed.expect
@@ -34,9 +34,9 @@
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t3 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (initial as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (initial as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t5 = #t4 as{TypeError} core::int*;
           #t3.{core::List::add}(#t5){(core::int*) →* void};
@@ -53,9 +53,9 @@
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t6 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (initial as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (initial as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t8 = #t7 as{TypeError} core::int*;
           #t6.{core::Set::add}(#t8){(core::int*) →* core::bool*};
@@ -75,9 +75,9 @@
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t9 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
           #t9.{core::List::add}(#t11){(core::int*) →* void};
@@ -94,9 +94,9 @@
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t12 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t13 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t13 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t14 = #t13 as{TypeError} core::int*;
           #t12.{core::Set::add}(#t14){(core::int*) →* core::bool*};
@@ -116,9 +116,9 @@
   core::List<core::int*>* list = block {
     final core::List<core::int*>* #t15 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t17 = #t16 as{TypeError} core::int*;
           #t15.{core::List::add}(#t17){(core::int*) →* void};
@@ -135,9 +135,9 @@
   core::Set<core::int*>* set = block {
     final core::Set<core::int*>* #t18 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t19 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = initial.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t19 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t20 = #t19 as{TypeError} core::int*;
           #t18.{core::Set::add}(#t20){(core::int*) →* core::bool*};
diff --git a/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect
index ed32e60..c778d8e 100644
--- a/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/invariance.dart.weak.transformed.expect
@@ -11,9 +11,9 @@
     final core::List<core::int*>* #t1 = core::_GrowableList::_literal1<core::int*>(0);
     #t1.{core::List::addAll}(list1){(core::Iterable<core::int*>*) →* void};
     {
-      core::Iterator<core::num*>* :sync-for-iterator = list2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = list2.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t3 = #t2 as{TypeError} core::int*;
           #t1.{core::List::add}(#t3){(core::int*) →* void};
@@ -21,9 +21,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (list3 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (list3 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t5 = #t4 as{TypeError} core::int*;
           #t1.{core::List::add}(#t5){(core::int*) →* void};
@@ -50,9 +50,9 @@
     #t9.{core::Set::add}(0){(core::int*) →* core::bool*};
     #t9.{core::Set::addAll}(set1){(core::Iterable<core::int*>*) →* void};
     {
-      core::Iterator<core::num*>* :sync-for-iterator = set2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = set2.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
@@ -60,9 +60,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (set3 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (set3 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t13 = #t12 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t13){(core::int*) →* core::bool*};
@@ -79,16 +79,16 @@
     final core::Map<core::int*, core::String*>* #t14 = <core::int*, core::String*>{};
     #t14.{core::Map::[]=}(0, "foo"){(core::int*, core::String*) →* void};
     {
-      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = map1.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int*, core::String*>* #t15 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = map1.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::String*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int*, core::String*>* #t15 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::String*>};
         #t14.{core::Map::[]=}(#t15.{core::MapEntry::key}{core::int*}, #t15.{core::MapEntry::value}{core::String*}){(core::int*, core::String*) →* void};
       }
     }
     {
-      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = map2.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t16 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = map2.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::String*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t16 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::String*>};
         {
           final core::int* #t17 = #t16.{core::MapEntry::key}{dynamic} as{TypeError} core::int*;
           final core::String* #t18 = #t16.{core::MapEntry::value}{dynamic} as{TypeError} core::String*;
@@ -97,9 +97,9 @@
       }
     }
     {
-      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = (map3 as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, dynamic>* #t19 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::String*>>* :sync-for-iterator = (map3 as{TypeError,ForDynamic} core::Map<dynamic, dynamic>*).{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::String*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::String*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic>* #t19 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::String*>};
         {
           final core::int* #t20 = #t19.{core::MapEntry::key}{dynamic} as{TypeError} core::int*;
           final core::String* #t21 = #t19.{core::MapEntry::value}{dynamic} as{TypeError} core::String*;
diff --git a/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect
index 6c633ac..cc8f344 100644
--- a/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/list_add_all.dart.weak.transformed.expect
@@ -14,9 +14,9 @@
   core::List<core::int*>* list1 = block {
     final core::List<core::int*>* #t1 = core::_GrowableList::•<core::int*>(0);
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t3 = #t2 as{TypeError} core::int*;
           #t1.{core::List::add}(#t3){(core::int*) →* void};
@@ -24,9 +24,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t5 = #t4 as{TypeError} core::int*;
           #t1.{core::List::add}(#t5){(core::int*) →* void};
@@ -35,9 +35,9 @@
     }
     #t1.{core::List::addAll}(iterableIntList){(core::Iterable<core::int*>*) →* void};
     {
-      core::Iterator<core::num*>* :sync-for-iterator = iterableNumList1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = iterableNumList1.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t7 = #t6 as{TypeError} core::int*;
           #t1.{core::List::add}(#t7){(core::int*) →* void};
@@ -45,9 +45,9 @@
       }
     }
     {
-      core::Iterator<core::num*>* :sync-for-iterator = iterableNumList2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = iterableNumList2.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t8 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t9 = #t8 as{TypeError} core::int*;
           #t1.{core::List::add}(#t9){(core::int*) →* void};
@@ -56,9 +56,9 @@
     }
     #t1.{core::List::addAll}(intList){(core::Iterable<core::int*>*) →* void};
     {
-      core::Iterator<core::num*>* :sync-for-iterator = numList1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = numList1.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
           #t1.{core::List::add}(#t11){(core::int*) →* void};
@@ -66,9 +66,9 @@
       }
     }
     {
-      core::Iterator<core::num*>* :sync-for-iterator = numList2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = numList2.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t13 = #t12 as{TypeError} core::int*;
           #t1.{core::List::add}(#t13){(core::int*) →* void};
@@ -80,9 +80,9 @@
   core::List<core::num*>* list2 = block {
     final core::List<core::num*>* #t14 = core::_GrowableList::•<core::num*>(0);
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t15 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t16 = #t15 as{TypeError} core::num*;
           #t14.{core::List::add}(#t16){(core::num*) →* void};
@@ -90,9 +90,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t17 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t17 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t18 = #t17 as{TypeError} core::num*;
           #t14.{core::List::add}(#t18){(core::num*) →* void};
@@ -111,9 +111,9 @@
     final core::List<core::int*>* #t19 = core::_GrowableList::•<core::int*>(0);
     final core::Iterable<dynamic>* #t20 = dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t20 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t20.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t21 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t20.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t21 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t22 = #t21 as{TypeError} core::int*;
           #t19.{core::List::add}(#t22){(core::int*) →* void};
@@ -122,9 +122,9 @@
     }
     final core::Iterable<dynamic>* #t23 = dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t23 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t23.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t24 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t23.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t24 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t25 = #t24 as{TypeError} core::int*;
           #t19.{core::List::add}(#t25){(core::int*) →* void};
@@ -136,9 +136,9 @@
       #t19.{core::List::addAll}(#t26){(core::Iterable<core::int*>*) →* void};
     final core::Iterable<dynamic>* #t27 = iterableNumList1;
     if(!(#t27 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t27.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t28 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t27.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t28 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t29 = #t28 as{TypeError} core::int*;
           #t19.{core::List::add}(#t29){(core::int*) →* void};
@@ -147,9 +147,9 @@
     }
     final core::Iterable<dynamic>* #t30 = iterableNumList2;
     if(!(#t30 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t30.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t31 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t30.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t31 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t32 = #t31 as{TypeError} core::int*;
           #t19.{core::List::add}(#t32){(core::int*) →* void};
@@ -161,9 +161,9 @@
       #t19.{core::List::addAll}(#t33){(core::Iterable<core::int*>*) →* void};
     final core::Iterable<dynamic>* #t34 = numList1;
     if(!(#t34 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t34.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t34.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t36 = #t35 as{TypeError} core::int*;
           #t19.{core::List::add}(#t36){(core::int*) →* void};
@@ -172,9 +172,9 @@
     }
     final core::Iterable<dynamic>* #t37 = numList2;
     if(!(#t37 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t37.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t38 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t37.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t38 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t39 = #t38 as{TypeError} core::int*;
           #t19.{core::List::add}(#t39){(core::int*) →* void};
@@ -187,9 +187,9 @@
     final core::List<core::num*>* #t40 = core::_GrowableList::•<core::num*>(0);
     final core::Iterable<dynamic>* #t41 = dynamicList1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t41 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t41.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t42 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t41.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t42 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t43 = #t42 as{TypeError} core::num*;
           #t40.{core::List::add}(#t43){(core::num*) →* void};
@@ -198,9 +198,9 @@
     }
     final core::Iterable<dynamic>* #t44 = dynamicList2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t44 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t44.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t45 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t44.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t45 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t46 = #t45 as{TypeError} core::num*;
           #t40.{core::List::add}(#t46){(core::num*) →* void};
diff --git a/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect
index a21b866..441c8f3 100644
--- a/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/list_add_all_nnbd.dart.weak.transformed.expect
@@ -11,9 +11,9 @@
   core::List<core::int> list1 = block {
     final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0);
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
           #t1.{core::List::add}(#t3){(core::int) → void};
@@ -21,9 +21,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t5 = #t4 as{TypeError,ForNonNullableByDefault} core::int;
           #t1.{core::List::add}(#t5){(core::int) → void};
@@ -31,9 +31,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t7 = #t6 as{TypeError,ForNonNullableByDefault} core::int;
           #t1.{core::List::add}(#t7){(core::int) → void};
@@ -47,9 +47,9 @@
   core::List<core::num> list2 = block {
     final core::List<core::num> #t8 = core::_GrowableList::•<core::num>(0);
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::num;
           #t8.{core::List::add}(#t10){(core::num) → void};
@@ -57,9 +57,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t11 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t11 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t12 = #t11 as{TypeError,ForNonNullableByDefault} core::num;
           #t8.{core::List::add}(#t12){(core::num) → void};
@@ -67,9 +67,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t13 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t13 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t14 = #t13 as{TypeError,ForNonNullableByDefault} core::num;
           #t8.{core::List::add}(#t14){(core::num) → void};
@@ -91,9 +91,9 @@
     final core::List<core::int> #t15 = core::_GrowableList::•<core::int>(0);
     final core::Iterable<dynamic>? #t16 = dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t16 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t16{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t17 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t16{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t17 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t18 = #t17 as{TypeError,ForNonNullableByDefault} core::int;
           #t15.{core::List::add}(#t18){(core::int) → void};
@@ -102,9 +102,9 @@
     }
     final core::Iterable<dynamic>? #t19 = dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t19 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t19{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t20 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t19{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t20 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t21 = #t20 as{TypeError,ForNonNullableByDefault} core::int;
           #t15.{core::List::add}(#t21){(core::int) → void};
@@ -113,9 +113,9 @@
     }
     final core::Iterable<dynamic>? #t22 = dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t22 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t22{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t22{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t24 = #t23 as{TypeError,ForNonNullableByDefault} core::int;
           #t15.{core::List::add}(#t24){(core::int) → void};
@@ -134,9 +134,9 @@
     final core::List<core::num> #t27 = core::_GrowableList::•<core::num>(0);
     final core::Iterable<dynamic>? #t28 = dynamicList1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t28 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t28{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t29 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t28{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t29 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t30 = #t29 as{TypeError,ForNonNullableByDefault} core::num;
           #t27.{core::List::add}(#t30){(core::num) → void};
@@ -145,9 +145,9 @@
     }
     final core::Iterable<dynamic>? #t31 = dynamicList2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t31 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t31{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t31{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t33 = #t32 as{TypeError,ForNonNullableByDefault} core::num;
           #t27.{core::List::add}(#t33){(core::num) → void};
@@ -156,9 +156,9 @@
     }
     final core::Iterable<dynamic>? #t34 = dynamicList3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t34 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t34{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t34{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t35 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t36 = #t35 as{TypeError,ForNonNullableByDefault} core::num;
           #t27.{core::List::add}(#t36){(core::num) → void};
diff --git a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect
index dbfe4f8..2becbbe 100644
--- a/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/mixed_entries.dart.weak.transformed.expect
@@ -49,9 +49,9 @@
   if(self::b)
     #t1.{core::Map::[]=}(0, 1){(dynamic, dynamic) →* void};
   else {
-    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic>* #t2 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic>* #t2 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t1.{core::Map::[]=}(#t2.{core::MapEntry::key}{dynamic}, #t2.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
     }
   }
@@ -59,9 +59,9 @@
 static field core::Map<dynamic, dynamic>* map2 = block {
   final core::Map<dynamic, dynamic>* #t3 = <dynamic, dynamic>{};
   if(self::b) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic>* #t4 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t3.{core::Map::[]=}(#t4.{core::MapEntry::key}{dynamic}, #t4.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
     }
   }
@@ -71,16 +71,16 @@
 static field core::Map<dynamic, dynamic>* map3 = block {
   final core::Map<dynamic, dynamic>* #t5 = <dynamic, dynamic>{};
   if(self::b) {
-    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic>* #t6 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t5.{core::Map::[]=}(#t6.{core::MapEntry::key}{dynamic}, #t6.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
     }
   }
   else {
-    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      final core::MapEntry<dynamic, dynamic>* #t7 = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::MapEntry<dynamic, dynamic>>* :sync-for-iterator = self::map0.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      final core::MapEntry<dynamic, dynamic>* #t7 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
       #t5.{core::Map::[]=}(#t7.{core::MapEntry::key}{dynamic}, #t7.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
     }
   }
@@ -90,9 +90,9 @@
   if(self::b)
     #t8.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
   else {
-    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic a = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic a = :sync-for-iterator.{core::Iterator::current}{dynamic};
       #t8.{core::Map::[]=}(a, 1){(dynamic, core::int*) →* void};
     }
   }
@@ -100,9 +100,9 @@
 static field core::Map<dynamic, core::int*>* map5 = block {
   final core::Map<dynamic, core::int*>* #t9 = <dynamic, core::int*>{};
   if(self::b) {
-    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic a = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic a = :sync-for-iterator.{core::Iterator::current}{dynamic};
       #t9.{core::Map::[]=}(a, 1){(dynamic, core::int*) →* void};
     }
   }
@@ -114,13 +114,13 @@
   if(self::b)
     #t10.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
   else {
-    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic a = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic a = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
-        core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<dynamic, core::int*>* #t11 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, core::int*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<dynamic, core::int*>* #t11 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, core::int*>};
           #t10.{core::Map::[]=}(#t11.{core::MapEntry::key}{dynamic}, #t11.{core::MapEntry::value}{core::int*}){(dynamic, core::int*) →* void};
         }
       }
@@ -130,13 +130,13 @@
 static field core::Map<dynamic, core::int*>* map7 = block {
   final core::Map<dynamic, core::int*>* #t12 = <dynamic, core::int*>{};
   if(self::b) {
-    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic a = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = self::list.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic a = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
-        core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator};
-        for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-          final core::MapEntry<dynamic, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current};
+        core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{a: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, core::int*>>*};
+        for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+          final core::MapEntry<dynamic, core::int*>* #t13 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, core::int*>};
           #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}{dynamic}, #t13.{core::MapEntry::value}{core::int*}){(dynamic, core::int*) →* void};
         }
       }
@@ -167,9 +167,9 @@
     #t16.{core::Map::[]=}(0, 1){(dynamic, core::int*) →* void};
   else
     for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, core::int*>* #t17 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, core::int*>};
         #t16.{core::Map::[]=}(#t17.{core::MapEntry::key}{dynamic}, #t17.{core::MapEntry::value}{core::int*}){(dynamic, core::int*) →* void};
       }
     }
@@ -178,9 +178,9 @@
   final core::Map<dynamic, core::int*>* #t18 = <dynamic, core::int*>{};
   if(self::b)
     for (core::int* i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int*}){(core::num*) →* core::bool*}; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
-      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<dynamic, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<dynamic, core::int*>>* :sync-for-iterator = <dynamic, core::int*>{self::list.{core::List::[]}(i){(core::int*) →* dynamic}: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, core::int*>* #t19 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, core::int*>};
         #t18.{core::Map::[]=}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{core::int*}){(dynamic, core::int*) →* void};
       }
     }
@@ -193,9 +193,9 @@
     #t20.{core::Map::[]=}(0, 1){(core::int*, core::int*) →* void};
   else
     if(self::b) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{0: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final core::MapEntry<core::int*, core::int*>* #t21 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{0: 1}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int*, core::int*>* #t21 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
         #t20.{core::Map::[]=}(#t21.{core::MapEntry::key}{core::int*}, #t21.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
       }
     }
diff --git a/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect
index 9049e14..1623845 100644
--- a/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/set_add_all.dart.weak.transformed.expect
@@ -56,9 +56,9 @@
   core::Set<core::int*>* set1 = block {
     final core::Set<core::int*>* #t9 = new col::_CompactLinkedHashSet::•<core::int*>();
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t11 = #t10 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t11){(core::int*) →* core::bool*};
@@ -66,9 +66,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t12 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t13 = #t12 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t13){(core::int*) →* core::bool*};
@@ -77,9 +77,9 @@
     }
     #t9.{core::Set::addAll}(iterableIntSet){(core::Iterable<core::int*>*) →* void};
     {
-      core::Iterator<core::num*>* :sync-for-iterator = iterableNumSet1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t14 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = iterableNumSet1.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t14 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t15 = #t14 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t15){(core::int*) →* core::bool*};
@@ -87,9 +87,9 @@
       }
     }
     {
-      core::Iterator<core::num*>* :sync-for-iterator = iterableNumSet2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = iterableNumSet2.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t17 = #t16 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t17){(core::int*) →* core::bool*};
@@ -98,9 +98,9 @@
     }
     #t9.{core::Set::addAll}(intSet){(core::Iterable<core::int*>*) →* void};
     {
-      core::Iterator<core::num*>* :sync-for-iterator = numSet1.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = numSet1.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t19 = #t18 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t19){(core::int*) →* core::bool*};
@@ -108,9 +108,9 @@
       }
     }
     {
-      core::Iterator<core::num*>* :sync-for-iterator = numSet2.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t20 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<core::num*>* :sync-for-iterator = numSet2.{core::Iterable::iterator}{core::Iterator<core::num*>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t20 = :sync-for-iterator.{core::Iterator::current}{core::num*};
         {
           final core::int* #t21 = #t20 as{TypeError} core::int*;
           #t9.{core::Set::add}(#t21){(core::int*) →* core::bool*};
@@ -122,9 +122,9 @@
   core::Set<core::num*>* set2 = block {
     final core::Set<core::num*>* #t22 = new col::_CompactLinkedHashSet::•<core::num*>();
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t24 = #t23 as{TypeError} core::num*;
           #t22.{core::Set::add}(#t24){(core::num*) →* core::bool*};
@@ -132,9 +132,9 @@
       }
     }
     {
-      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t25 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t25 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t26 = #t25 as{TypeError} core::num*;
           #t22.{core::Set::add}(#t26){(core::num*) →* core::bool*};
@@ -153,9 +153,9 @@
     final core::Set<core::int*>* #t27 = new col::_CompactLinkedHashSet::•<core::int*>();
     final core::Iterable<dynamic>* #t28 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t28 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t28.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t29 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t28.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t29 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t30 = #t29 as{TypeError} core::int*;
           #t27.{core::Set::add}(#t30){(core::int*) →* core::bool*};
@@ -164,9 +164,9 @@
     }
     final core::Iterable<dynamic>* #t31 = dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t31 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t31.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t31.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t32 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t33 = #t32 as{TypeError} core::int*;
           #t27.{core::Set::add}(#t33){(core::int*) →* core::bool*};
@@ -178,9 +178,9 @@
       #t27.{core::Set::addAll}(#t34){(core::Iterable<core::int*>*) →* void};
     final core::Iterable<dynamic>* #t35 = iterableNumSet1;
     if(!(#t35 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t35.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t36 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t35.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t36 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t37 = #t36 as{TypeError} core::int*;
           #t27.{core::Set::add}(#t37){(core::int*) →* core::bool*};
@@ -189,9 +189,9 @@
     }
     final core::Iterable<dynamic>* #t38 = iterableNumSet2;
     if(!(#t38 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t38.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t39 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t38.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t39 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t40 = #t39 as{TypeError} core::int*;
           #t27.{core::Set::add}(#t40){(core::int*) →* core::bool*};
@@ -203,9 +203,9 @@
       #t27.{core::Set::addAll}(#t41){(core::Iterable<core::int*>*) →* void};
     final core::Iterable<dynamic>* #t42 = numSet1;
     if(!(#t42 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t42.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t43 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t42.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t43 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t44 = #t43 as{TypeError} core::int*;
           #t27.{core::Set::add}(#t44){(core::int*) →* core::bool*};
@@ -214,9 +214,9 @@
     }
     final core::Iterable<dynamic>* #t45 = numSet2;
     if(!(#t45 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t45.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t46 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t45.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t46 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int* #t47 = #t46 as{TypeError} core::int*;
           #t27.{core::Set::add}(#t47){(core::int*) →* core::bool*};
@@ -229,9 +229,9 @@
     final core::Set<core::num*>* #t48 = new col::_CompactLinkedHashSet::•<core::num*>();
     final core::Iterable<dynamic>* #t49 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t49 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t49.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t50 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t49.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t50 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t51 = #t50 as{TypeError} core::num*;
           #t48.{core::Set::add}(#t51){(core::num*) →* core::bool*};
@@ -240,9 +240,9 @@
     }
     final core::Iterable<dynamic>* #t52 = dynamicSet2 as{TypeError,ForDynamic} core::Iterable<dynamic>*;
     if(!(#t52 == null)) {
-      core::Iterator<dynamic>* :sync-for-iterator = #t52.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t53 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = #t52.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t53 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num* #t54 = #t53 as{TypeError} core::num*;
           #t48.{core::Set::add}(#t54){(core::num*) →* core::bool*};
@@ -278,9 +278,9 @@
     throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}{core::int*}}, actual ${set2.{_in::EfficientLengthIterable::length}{core::int*}}.";
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = set1.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic element = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic>* :sync-for-iterator = set1.{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic element = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         if(!set2.{core::Set::contains}(element){(core::Object*) →* core::bool*}) {
           throw "Element ${element} not found. Expected ${set1}, actual ${set2}.";
diff --git a/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect b/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect
index 0a6d1df..bc0fac7 100644
--- a/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/unified_collections/set_add_all_nnbd.dart.weak.transformed.expect
@@ -38,9 +38,9 @@
   core::Set<core::int> set1 = block {
     final core::Set<core::int> #t6 = new col::_CompactLinkedHashSet::•<core::int>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t7 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t8 = #t7 as{TypeError,ForNonNullableByDefault} core::int;
           #t6.{core::Set::add}(#t8){(core::int) → core::bool};
@@ -48,9 +48,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t9 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t10 = #t9 as{TypeError,ForNonNullableByDefault} core::int;
           #t6.{core::Set::add}(#t10){(core::int) → core::bool};
@@ -58,9 +58,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t11 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t11 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t12 = #t11 as{TypeError,ForNonNullableByDefault} core::int;
           #t6.{core::Set::add}(#t12){(core::int) → core::bool};
@@ -74,9 +74,9 @@
   core::Set<core::num> set2 = block {
     final core::Set<core::num> #t13 = new col::_CompactLinkedHashSet::•<core::num>();
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t14 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t14 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t15 = #t14 as{TypeError,ForNonNullableByDefault} core::num;
           #t13.{core::Set::add}(#t15){(core::num) → core::bool};
@@ -84,9 +84,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t16 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t17 = #t16 as{TypeError,ForNonNullableByDefault} core::num;
           #t13.{core::Set::add}(#t17){(core::num) → core::bool};
@@ -94,9 +94,9 @@
       }
     }
     {
-      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = (dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t18 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t19 = #t18 as{TypeError,ForNonNullableByDefault} core::num;
           #t13.{core::Set::add}(#t19){(core::num) → core::bool};
@@ -143,9 +143,9 @@
     final core::Set<core::int> #t25 = new col::_CompactLinkedHashSet::•<core::int>();
     final core::Iterable<dynamic>? #t26 = dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t26 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t26{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t27 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t26{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t27 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t28 = #t27 as{TypeError,ForNonNullableByDefault} core::int;
           #t25.{core::Set::add}(#t28){(core::int) → core::bool};
@@ -154,9 +154,9 @@
     }
     final core::Iterable<dynamic>? #t29 = dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t29 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t29{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t30 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t29{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t30 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t31 = #t30 as{TypeError,ForNonNullableByDefault} core::int;
           #t25.{core::Set::add}(#t31){(core::int) → core::bool};
@@ -165,9 +165,9 @@
     }
     final core::Iterable<dynamic>? #t32 = dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t32 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t32{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t33 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t32{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t33 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::int #t34 = #t33 as{TypeError,ForNonNullableByDefault} core::int;
           #t25.{core::Set::add}(#t34){(core::int) → core::bool};
@@ -186,9 +186,9 @@
     final core::Set<core::num> #t37 = new col::_CompactLinkedHashSet::•<core::num>();
     final core::Iterable<dynamic>? #t38 = dynamicSet1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t38 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t38{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t39 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t38{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t39 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t40 = #t39 as{TypeError,ForNonNullableByDefault} core::num;
           #t37.{core::Set::add}(#t40){(core::num) → core::bool};
@@ -197,9 +197,9 @@
     }
     final core::Iterable<dynamic>? #t41 = dynamicSet2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t41 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t41{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t42 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t41{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t42 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t43 = #t42 as{TypeError,ForNonNullableByDefault} core::num;
           #t37.{core::Set::add}(#t43){(core::num) → core::bool};
@@ -208,9 +208,9 @@
     }
     final core::Iterable<dynamic>? #t44 = dynamicSet3 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>?;
     if(!(#t44 == null)) {
-      core::Iterator<dynamic> :sync-for-iterator = #t44{core::Iterable<dynamic>}.{core::Iterable::iterator};
-      for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        final dynamic #t45 = :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic> :sync-for-iterator = #t44{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t45 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
           final core::num #t46 = #t45 as{TypeError,ForNonNullableByDefault} core::num;
           #t37.{core::Set::add}(#t46){(core::num) → core::bool};
@@ -235,9 +235,9 @@
     throw "Unexpected length. Expected ${set1.{_in::EfficientLengthIterable::length}{core::int}}, actual ${set2.{_in::EfficientLengthIterable::length}{core::int}}.";
   }
   {
-    core::Iterator<dynamic> :sync-for-iterator = set1.{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      dynamic element = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<dynamic> :sync-for-iterator = set1.{core::Iterable::iterator}{core::Iterator<dynamic>};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      dynamic element = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
         if(!set2.{core::Set::contains}(element){(core::Object?) → core::bool}) {
           throw "Element ${element} not found. Expected ${set1}, actual ${set2}.";
diff --git a/pkg/frontend_server/lib/frontend_server.dart b/pkg/frontend_server/lib/frontend_server.dart
index 5881625..29589fc 100644
--- a/pkg/frontend_server/lib/frontend_server.dart
+++ b/pkg/frontend_server/lib/frontend_server.dart
@@ -168,6 +168,8 @@
   ..addFlag('experimental-emit-debug-metadata',
       help: 'Emit module and library metadata for the debugger',
       defaultsTo: false)
+  ..addFlag('emit-debug-symbols',
+      help: 'Emit debug symbols for the debugger', defaultsTo: false)
   ..addOption('dartdevc-module-format',
       help: 'The module format to use on for the dartdevc compiler',
       defaultsTo: 'amd')
@@ -324,7 +326,8 @@
       this.unsafePackageSerialization,
       this.incrementalSerialization: true,
       this.useDebuggerModuleNames: false,
-      this.emitDebugMetadata: false}) {
+      this.emitDebugMetadata: false,
+      this.emitDebugSymbols: false}) {
     _outputStream ??= stdout;
     printerFactory ??= new BinaryPrinterFactory();
   }
@@ -335,6 +338,7 @@
   bool incrementalSerialization;
   bool useDebuggerModuleNames;
   bool emitDebugMetadata;
+  bool emitDebugSymbols;
   bool _printIncrementalDependencies;
 
   CompilerOptions _compilerOptions;
@@ -625,6 +629,7 @@
     final File manifestFile = File('$filename.json');
     final File sourceMapsFile = File('$filename.map');
     final File metadataFile = File('$filename.metadata');
+    final File symbolsFile = File('$filename.symbols');
     if (!sourceFile.parent.existsSync()) {
       sourceFile.parent.createSync(recursive: true);
     }
@@ -632,6 +637,7 @@
         component, strongComponents, fileSystemScheme, packageConfig,
         useDebuggerModuleNames: useDebuggerModuleNames,
         emitDebugMetadata: emitDebugMetadata,
+        emitDebugSymbols: emitDebugSymbols,
         moduleFormat: moduleFormat,
         soundNullSafety: soundNullSafety);
     final sourceFileSink = sourceFile.openWrite();
@@ -639,6 +645,7 @@
     final sourceMapsFileSink = sourceMapsFile.openWrite();
     final metadataFileSink =
         emitDebugMetadata ? metadataFile.openWrite() : null;
+    final symbolsFileSink = emitDebugSymbols ? symbolsFile.openWrite() : null;
     final kernel2JsCompilers = await _bundler.compile(
         results.classHierarchy,
         results.coreTypes,
@@ -646,13 +653,15 @@
         sourceFileSink,
         manifestFileSink,
         sourceMapsFileSink,
-        metadataFileSink);
+        metadataFileSink,
+        symbolsFileSink);
     cachedProgramCompilers.addAll(kernel2JsCompilers);
     await Future.wait([
       sourceFileSink.close(),
       manifestFileSink.close(),
       sourceMapsFileSink.close(),
-      if (metadataFileSink != null) metadataFileSink.close()
+      if (metadataFileSink != null) metadataFileSink.close(),
+      if (symbolsFileSink != null) symbolsFileSink.close(),
     ]);
   }
 
@@ -1346,7 +1355,8 @@
       unsafePackageSerialization: options["unsafe-package-serialization"],
       incrementalSerialization: options["incremental-serialization"],
       useDebuggerModuleNames: options['debugger-module-names'],
-      emitDebugMetadata: options['experimental-emit-debug-metadata']);
+      emitDebugMetadata: options['experimental-emit-debug-metadata'],
+      emitDebugSymbols: options['emit-debug-symbols']);
 
   if (options.rest.isNotEmpty) {
     return await compiler.compile(options.rest[0], options,
diff --git a/pkg/frontend_server/lib/src/javascript_bundle.dart b/pkg/frontend_server/lib/src/javascript_bundle.dart
index 9829c57..a989fb1 100644
--- a/pkg/frontend_server/lib/src/javascript_bundle.dart
+++ b/pkg/frontend_server/lib/src/javascript_bundle.dart
@@ -27,6 +27,7 @@
       this._fileSystemScheme, this._packageConfig,
       {this.useDebuggerModuleNames = false,
       this.emitDebugMetadata = false,
+      this.emitDebugSymbols = false,
       this.soundNullSafety = false,
       String moduleFormat})
       : _moduleFormat = parseModuleFormat(moduleFormat ?? 'amd') {
@@ -63,6 +64,7 @@
   final PackageConfig _packageConfig;
   final bool useDebuggerModuleNames;
   final bool emitDebugMetadata;
+  final bool emitDebugSymbols;
   final ModuleFormat _moduleFormat;
   final bool soundNullSafety;
 
@@ -74,16 +76,19 @@
 
   /// Compile each component into a single JavaScript module.
   Future<Map<String, ProgramCompiler>> compile(
-      ClassHierarchy classHierarchy,
-      CoreTypes coreTypes,
-      Set<Library> loadedLibraries,
-      IOSink codeSink,
-      IOSink manifestSink,
-      IOSink sourceMapsSink,
-      IOSink metadataSink) async {
+    ClassHierarchy classHierarchy,
+    CoreTypes coreTypes,
+    Set<Library> loadedLibraries,
+    IOSink codeSink,
+    IOSink manifestSink,
+    IOSink sourceMapsSink,
+    IOSink metadataSink,
+    IOSink symbolsSink,
+  ) async {
     var codeOffset = 0;
     var sourceMapOffset = 0;
     var metadataOffset = 0;
+    var symbolsOffset = 0;
     final manifest = <String, Map<String, List<int>>>{};
     final Set<Uri> visited = <Uri>{};
     final Map<String, ProgramCompiler> kernel2JsCompilers = {};
@@ -135,6 +140,7 @@
           sourceMap: true,
           summarizeApi: false,
           emitDebugMetadata: emitDebugMetadata,
+          emitDebugSymbols: emitDebugSymbols,
           moduleName: moduleName,
           soundNullSafety: soundNullSafety,
         ),
@@ -145,10 +151,6 @@
 
       final jsModule = compiler.emitModule(summaryComponent);
 
-      // TODO:(annagrin): create symbol tables and pass to expression compiler
-      // so it can map dart symbols to js symbols
-      // [issue 40273](https://github.com/dart-lang/sdk/issues/40273)
-
       // Save program compiler to reuse for expression evaluation.
       kernel2JsCompilers[moduleName] = compiler;
 
@@ -168,22 +170,29 @@
         inlineSourceMap: true,
         buildSourceMap: true,
         emitDebugMetadata: emitDebugMetadata,
+        emitDebugSymbols: emitDebugSymbols,
         jsUrl: '$moduleUrl.lib.js',
         mapUrl: '$moduleUrl.lib.js.map',
         sourceMapBase: sourceMapBase,
         customScheme: _fileSystemScheme,
+        compiler: compiler,
         component: summaryComponent,
       );
       final codeBytes = utf8.encode(code.code);
       final sourceMapBytes = utf8.encode(json.encode(code.sourceMap));
       final metadataBytes =
           emitDebugMetadata ? utf8.encode(json.encode(code.metadata)) : null;
+      final symbolsBytes =
+          emitDebugSymbols ? utf8.encode(json.encode(code.symbols)) : null;
 
       codeSink.add(codeBytes);
       sourceMapsSink.add(sourceMapBytes);
       if (emitDebugMetadata) {
         metadataSink.add(metadataBytes);
       }
+      if (emitDebugSymbols) {
+        symbolsSink.add(symbolsBytes);
+      }
       final String moduleKey = _moduleImportForSummary[moduleUri];
       manifest[moduleKey] = {
         'code': <int>[codeOffset, codeOffset += codeBytes.length],
@@ -196,6 +205,11 @@
             metadataOffset,
             metadataOffset += metadataBytes.length
           ],
+        if (emitDebugSymbols)
+          'symbols': <int>[
+            symbolsOffset,
+            symbolsOffset += symbolsBytes.length,
+          ],
       };
     }
     manifestSink.add(utf8.encode(json.encode(manifest)));
diff --git a/pkg/frontend_server/test/frontend_server_test.dart b/pkg/frontend_server/test/frontend_server_test.dart
index ee69ecb..8205380 100644
--- a/pkg/frontend_server/test/frontend_server_test.dart
+++ b/pkg/frontend_server/test/frontend_server_test.dart
@@ -1979,12 +1979,14 @@
       var manifestFile = File('${dillFile.path}.json');
       var sourceMapsFile = File('${dillFile.path}.map');
       var metadataFile = File('${dillFile.path}.metadata');
+      var symbolsFile = File('${dillFile.path}.symbols');
 
       expect(dillFile.existsSync(), false);
       expect(sourceFile.existsSync(), false);
       expect(manifestFile.existsSync(), false);
       expect(sourceMapsFile.existsSync(), false);
       expect(metadataFile.existsSync(), false);
+      expect(symbolsFile.existsSync(), false);
 
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
@@ -1994,6 +1996,7 @@
         '--target=dartdevc',
         '--packages=${package_config.path}',
         '--experimental-emit-debug-metadata',
+        '--emit-debug-symbols',
       ];
 
       final StreamController<List<int>> streamController =
@@ -2022,6 +2025,7 @@
         expect(manifestFile.existsSync(), equals(true));
         expect(sourceMapsFile.existsSync(), equals(true));
         expect(metadataFile.existsSync(), equals(true));
+        expect(symbolsFile.existsSync(), equals(true));
         expect(result.filename, dillFile.path);
         streamController.add('accept\n'.codeUnits);
         outputParser.expectSources = false;
diff --git a/pkg/frontend_server/test/src/javascript_bundle_test.dart b/pkg/frontend_server/test/src/javascript_bundle_test.dart
index 898cbcc..d927f82 100644
--- a/pkg/frontend_server/test/src/javascript_bundle_test.dart
+++ b/pkg/frontend_server/test/src/javascript_bundle_test.dart
@@ -111,16 +111,19 @@
     final codeSink = _MemorySink();
     final sourcemapSink = _MemorySink();
     final metadataSink = _MemorySink();
+    final symbolsSink = _MemorySink();
     final coreTypes = CoreTypes(testComponent);
 
     final compilers = await javaScriptBundler.compile(
-        ClassHierarchy(testComponent, coreTypes),
-        coreTypes,
-        {},
-        codeSink,
-        manifestSink,
-        sourcemapSink,
-        metadataSink);
+      ClassHierarchy(testComponent, coreTypes),
+      coreTypes,
+      {},
+      codeSink,
+      manifestSink,
+      sourcemapSink,
+      metadataSink,
+      symbolsSink,
+    );
 
     final Map manifest = json.decode(utf8.decode(manifestSink.buffer));
     final String code = utf8.decode(codeSink.buffer);
@@ -162,10 +165,19 @@
     final codeSink = _MemorySink();
     final sourcemapSink = _MemorySink();
     final metadataSink = _MemorySink();
+    final symbolsSink = _MemorySink();
     final coreTypes = CoreTypes(testComponent);
 
-    await javaScriptBundler.compile(ClassHierarchy(testComponent, coreTypes),
-        coreTypes, {}, codeSink, manifestSink, sourcemapSink, metadataSink);
+    await javaScriptBundler.compile(
+      ClassHierarchy(testComponent, coreTypes),
+      coreTypes,
+      {},
+      codeSink,
+      manifestSink,
+      sourcemapSink,
+      metadataSink,
+      symbolsSink,
+    );
 
     final Map manifest = json.decode(utf8.decode(manifestSink.buffer));
     final String code = utf8.decode(codeSink.buffer);
@@ -204,10 +216,19 @@
     final codeSink = _MemorySink();
     final sourcemapSink = _MemorySink();
     final metadataSink = _MemorySink();
+    final symbolsSink = _MemorySink();
     final coreTypes = CoreTypes(testComponent);
 
-    await javaScriptBundler.compile(ClassHierarchy(testComponent, coreTypes),
-        coreTypes, {}, codeSink, manifestSink, sourcemapSink, metadataSink);
+    await javaScriptBundler.compile(
+      ClassHierarchy(testComponent, coreTypes),
+      coreTypes,
+      {},
+      codeSink,
+      manifestSink,
+      sourcemapSink,
+      metadataSink,
+      symbolsSink,
+    );
 
     final Map manifest = json.decode(utf8.decode(manifestSink.buffer));
     final String code = utf8.decode(codeSink.buffer);
@@ -256,10 +277,19 @@
     final codeSink = _MemorySink();
     final sourcemapSink = _MemorySink();
     final metadataSink = _MemorySink();
+    final symbolsSink = _MemorySink();
     final coreTypes = CoreTypes(testComponent);
 
-    javaScriptBundler.compile(ClassHierarchy(testComponent, coreTypes),
-        coreTypes, {}, codeSink, manifestSink, sourcemapSink, metadataSink);
+    javaScriptBundler.compile(
+      ClassHierarchy(testComponent, coreTypes),
+      coreTypes,
+      {},
+      codeSink,
+      manifestSink,
+      sourcemapSink,
+      metadataSink,
+      symbolsSink,
+    );
 
     final code = utf8.decode(codeSink.buffer);
     final manifest = json.decode(utf8.decode(manifestSink.buffer));
diff --git a/pkg/kernel/lib/core_types.dart b/pkg/kernel/lib/core_types.dart
index baa6659..feaa794 100644
--- a/pkg/kernel/lib/core_types.dart
+++ b/pkg/kernel/lib/core_types.dart
@@ -124,20 +124,20 @@
 
   late final Library asyncLibrary = index.getLibrary('dart:async');
 
-  late final Member asyncStarStreamControllerAdd =
-      index.getMember('dart:async', '_AsyncStarStreamController', 'add');
+  late final Procedure asyncStarStreamControllerAdd =
+      index.getProcedure('dart:async', '_AsyncStarStreamController', 'add');
 
-  late final Member asyncStarStreamControllerAddError =
-      index.getMember('dart:async', '_AsyncStarStreamController', 'addError');
+  late final Procedure asyncStarStreamControllerAddError = index.getProcedure(
+      'dart:async', '_AsyncStarStreamController', 'addError');
 
-  late final Member asyncStarStreamControllerAddStream =
-      index.getMember('dart:async', '_AsyncStarStreamController', 'addStream');
+  late final Procedure asyncStarStreamControllerAddStream = index.getProcedure(
+      'dart:async', '_AsyncStarStreamController', 'addStream');
 
   late final Class asyncStarStreamControllerClass =
       index.getClass('dart:async', '_AsyncStarStreamController');
 
-  late final Member asyncStarStreamControllerClose =
-      index.getMember('dart:async', '_AsyncStarStreamController', 'close');
+  late final Procedure asyncStarStreamControllerClose =
+      index.getProcedure('dart:async', '_AsyncStarStreamController', 'close');
 
   late final Constructor asyncStarStreamControllerDefaultConstructor =
       index.getConstructor('dart:async', '_AsyncStarStreamController', '');
@@ -259,8 +259,8 @@
   late final Member streamIteratorSubscription =
       index.getMember('dart:async', '_StreamIterator', '_subscription');
 
-  late final Member streamIteratorCancel =
-      index.getMember('dart:async', '_StreamIterator', 'cancel');
+  late final Procedure streamIteratorCancel =
+      index.getProcedure('dart:async', '_StreamIterator', 'cancel');
 
   late final Class streamIteratorClass =
       index.getClass('dart:async', '_StreamIterator');
@@ -268,8 +268,8 @@
   late final Constructor streamIteratorDefaultConstructor =
       index.getConstructor('dart:async', '_StreamIterator', '');
 
-  late final Member streamIteratorMoveNext =
-      index.getMember('dart:async', '_StreamIterator', 'moveNext');
+  late final Procedure streamIteratorMoveNext =
+      index.getProcedure('dart:async', '_StreamIterator', 'moveNext');
 
   late final Member streamIteratorCurrent =
       index.getMember('dart:async', '_StreamIterator', 'get:current');
diff --git a/pkg/kernel/lib/transformations/async.dart b/pkg/kernel/lib/transformations/async.dart
index d80784a..86bff985 100644
--- a/pkg/kernel/lib/transformations/async.dart
+++ b/pkg/kernel/lib/transformations/async.dart
@@ -406,10 +406,12 @@
         nameIndex,
         _staticTypeContext.typeEnvironment.coreTypes
             .boolRawType(_staticTypeContext.nonNullable));
+    final objectEquals = continuationRewriter.helper.coreTypes.objectEquals;
     rightBody.addStatement(new ExpressionStatement(new VariableSet(
         result,
-        new MethodInvocation(expr.right, new Name('=='),
-            new Arguments(<Expression>[new BoolLiteral(true)])))));
+        new EqualsCall(expr.right, new BoolLiteral(true),
+            interfaceTarget: objectEquals,
+            functionType: objectEquals.getterType as FunctionType))));
     var then, otherwise;
     if (expr.operatorEnum == LogicalExpressionOperator.AND) {
       then = rightBody;
@@ -420,12 +422,13 @@
     }
     statements.add(new IfStatement(new VariableGet(result), then, otherwise));
 
-    var test = new MethodInvocation(expr.left, new Name('=='),
-        new Arguments(<Expression>[new BoolLiteral(true)]));
+    final test = new EqualsCall(expr.left, new BoolLiteral(true),
+        interfaceTarget: objectEquals,
+        functionType: objectEquals.getterType as FunctionType);
     statements.add(new ExpressionStatement(new VariableSet(result, test)));
 
     seenAwait = false;
-    test.receiver = transform(test.receiver)..parent = test;
+    test.left = transform(test.left)..parent = test;
 
     ++nameIndex;
     seenAwait = seenAwait || rightAwait;
diff --git a/pkg/kernel/lib/transformations/continuation.dart b/pkg/kernel/lib/transformations/continuation.dart
index a148ba4..fd8476f 100644
--- a/pkg/kernel/lib/transformations/continuation.dart
+++ b/pkg/kernel/lib/transformations/continuation.dart
@@ -8,6 +8,7 @@
 
 import '../ast.dart';
 import '../core_types.dart';
+import '../type_algebra.dart' show Substitution;
 import '../type_environment.dart';
 
 import 'async.dart';
@@ -196,19 +197,28 @@
 
     final syncForIterator = VariableDeclaration(
         ContinuationVariables.syncForIterator,
-        initializer: PropertyGet(
-            iterable, Name('iterator'), coreTypes.iterableGetIterator)
+        initializer: InstanceGet(InstanceAccessKind.Instance, iterable,
+            coreTypes.iterableGetIterator.name,
+            interfaceTarget: coreTypes.iterableGetIterator,
+            resultType: iteratorType)
           ..fileOffset = iterable.fileOffset,
         type: iteratorType)
       ..fileOffset = iterable.fileOffset;
 
-    final condition = MethodInvocation(VariableGet(syncForIterator),
-        Name('moveNext'), Arguments([]), coreTypes.iteratorMoveNext)
+    final condition = InstanceInvocation(
+        InstanceAccessKind.Instance,
+        VariableGet(syncForIterator),
+        coreTypes.iteratorMoveNext.name,
+        Arguments([]),
+        interfaceTarget: coreTypes.iteratorMoveNext,
+        functionType: coreTypes.iteratorMoveNext.getterType as FunctionType)
       ..fileOffset = iterable.fileOffset;
 
     final variable = stmt.variable
-      ..initializer = (PropertyGet(VariableGet(syncForIterator),
-          Name('current'), coreTypes.iteratorGetCurrent)
+      ..initializer = (InstanceGet(InstanceAccessKind.Instance,
+          VariableGet(syncForIterator), coreTypes.iteratorGetCurrent.name,
+          interfaceTarget: coreTypes.iteratorGetCurrent,
+          resultType: elementType)
         ..fileOffset = stmt.bodyOffset);
 
     final Block body = Block([variable, stmt.body]);
@@ -487,17 +497,19 @@
 
     var statements = <Statement>[];
     if (node.isYieldStar) {
-      statements.add(new ExpressionStatement(new PropertySet(
+      statements.add(new ExpressionStatement(new InstanceSet(
+          InstanceAccessKind.Instance,
           VariableGet(iteratorParameter),
-          new Name('_yieldEachIterable', helper.coreLibrary),
+          helper.syncIteratorYieldEachIterable.name,
           transformedExpression,
-          helper.syncIteratorYieldEachIterable)));
+          interfaceTarget: helper.syncIteratorYieldEachIterable)));
     } else {
-      statements.add(new ExpressionStatement(new PropertySet(
+      statements.add(new ExpressionStatement(new InstanceSet(
+          InstanceAccessKind.Instance,
           VariableGet(iteratorParameter),
-          new Name('_current', helper.coreLibrary),
+          helper.syncIteratorCurrent.name,
           transformedExpression,
-          helper.syncIteratorCurrent)));
+          interfaceTarget: helper.syncIteratorCurrent)));
     }
 
     statements.add(createContinuationPoint(new BoolLiteral(true))
@@ -995,21 +1007,25 @@
           initializer: stmt.iterable,
           type: stmt.iterable.getStaticType(staticTypeContext));
 
+      final streamIteratorType = new InterfaceType(helper.streamIteratorClass,
+          staticTypeContext.nullable, [valueVariable.type]);
       var forIteratorVariable = VariableDeclaration(
           ContinuationVariables.forIterator,
           initializer: new ConstructorInvocation(
               helper.streamIteratorConstructor,
               new Arguments(<Expression>[new VariableGet(streamVariable)],
                   types: [valueVariable.type])),
-          type: new InterfaceType(helper.streamIteratorClass,
-              staticTypeContext.nullable, [valueVariable.type]));
+          type: streamIteratorType);
 
       // await :for-iterator.moveNext()
-      var condition = new AwaitExpression(new MethodInvocation(
+      var condition = new AwaitExpression(new InstanceInvocation(
+          InstanceAccessKind.Instance,
           VariableGet(forIteratorVariable),
-          new Name('moveNext'),
-          new Arguments(<Expression>[]),
-          helper.streamIteratorMoveNext))
+          helper.streamIteratorMoveNext.name,
+          new Arguments([]),
+          interfaceTarget: helper.streamIteratorMoveNext,
+          functionType:
+              helper.streamIteratorMoveNext.getterType as FunctionType))
         ..fileOffset = stmt.fileOffset;
 
       Expression whileCondition;
@@ -1029,10 +1045,10 @@
       }
 
       // T <variable> = :for-iterator.current;
-      valueVariable.initializer = new PropertyGet(
-          VariableGet(forIteratorVariable),
-          new Name('current'),
-          helper.streamIteratorCurrent)
+      valueVariable.initializer = new InstanceGet(InstanceAccessKind.Instance,
+          VariableGet(forIteratorVariable), helper.streamIteratorCurrent.name,
+          interfaceTarget: helper.streamIteratorCurrent,
+          resultType: valueVariable.type)
         ..fileOffset = stmt.bodyOffset;
       valueVariable.initializer!.parent = valueVariable;
 
@@ -1040,20 +1056,24 @@
       var tryBody = new WhileStatement(whileCondition, whileBody);
 
       // if (:for-iterator._subscription != null) await :for-iterator.cancel();
+      final DartType subscriptionType =
+          Substitution.fromInterfaceType(streamIteratorType).substituteType(
+              helper.coreTypes.streamIteratorSubscription.getterType);
       var tryFinalizer = new IfStatement(
-          new Not(new MethodInvocation(
-              new PropertyGet(
-                  VariableGet(forIteratorVariable),
-                  new Name('_subscription', helper.asyncLibrary),
-                  helper.coreTypes.streamIteratorSubscription),
-              new Name('=='),
-              new Arguments([new NullLiteral()]),
-              helper.coreTypes.objectEquals)),
-          new ExpressionStatement(new AwaitExpression(new MethodInvocation(
+          new Not(new EqualsNull(new InstanceGet(
+              InstanceAccessKind.Instance,
               VariableGet(forIteratorVariable),
-              new Name('cancel'),
+              helper.coreTypes.streamIteratorSubscription.name,
+              interfaceTarget: helper.coreTypes.streamIteratorSubscription,
+              resultType: subscriptionType))),
+          new ExpressionStatement(new AwaitExpression(new InstanceInvocation(
+              InstanceAccessKind.Instance,
+              VariableGet(forIteratorVariable),
+              helper.streamIteratorCancel.name,
               new Arguments(<Expression>[]),
-              helper.streamIteratorCancel))),
+              interfaceTarget: helper.streamIteratorCancel,
+              functionType:
+                  helper.streamIteratorCancel.getterType as FunctionType))),
           null);
 
       var tryFinally = new TryFinally(tryBody, tryFinalizer);
@@ -1193,8 +1213,13 @@
     var completerGet = new VariableGet(controllerVariable!);
     statements.add(new ExpressionStatement(new VariableSet(
         controllerStreamVariable,
-        new PropertyGet(completerGet, new Name('stream', helper.asyncLibrary),
-            helper.asyncStarStreamControllerStream))));
+        new InstanceGet(InstanceAccessKind.Instance, completerGet,
+            helper.asyncStarStreamControllerStream.name,
+            interfaceTarget: helper.asyncStarStreamControllerStream,
+            resultType: Substitution.fromInterfaceType(
+                    controllerVariable!.type as InterfaceType)
+                .substituteType(
+                    helper.asyncStarStreamControllerStream.getterType)))));
 
     // return :controller_stream;
     var returnStatement =
@@ -1211,11 +1236,14 @@
     Statement body = super.buildWrappedBody();
     --currentTryDepth;
 
-    var finallyBody = new ExpressionStatement(new MethodInvocation(
+    var finallyBody = new ExpressionStatement(new InstanceInvocation(
+        InstanceAccessKind.Instance,
         new VariableGet(controllerVariable!),
-        new Name('close'),
-        new Arguments(<Expression>[]),
-        helper.asyncStarStreamControllerClose));
+        helper.asyncStarStreamControllerClose.name,
+        new Arguments([]),
+        interfaceTarget: helper.asyncStarStreamControllerClose,
+        functionType:
+            helper.asyncStarStreamControllerClose.getterType as FunctionType));
 
     var tryFinally = new TryFinally(body, new Block(<Statement>[finallyBody]));
     return tryFinally;
@@ -1223,14 +1251,17 @@
 
   Statement buildCatchBody(VariableDeclaration exceptionVariable,
       VariableDeclaration stackTraceVariable) {
-    return new ExpressionStatement(new MethodInvocation(
+    return new ExpressionStatement(new InstanceInvocation(
+        InstanceAccessKind.Instance,
         new VariableGet(controllerVariable!),
-        new Name('addError'),
+        helper.asyncStarStreamControllerAddError.name,
         new Arguments(<Expression>[
           new VariableGet(exceptionVariable),
           new VariableGet(stackTraceVariable)
         ]),
-        helper.asyncStarStreamControllerAddError));
+        interfaceTarget: helper.asyncStarStreamControllerAddError,
+        functionType: helper.asyncStarStreamControllerAddError.getterType
+            as FunctionType));
   }
 
   Statement buildReturn(Statement body) {
@@ -1245,13 +1276,19 @@
   TreeNode visitYieldStatement(YieldStatement stmt, TreeNode? removalSentinel) {
     Expression expr = expressionRewriter!.rewrite(stmt.expression, statements);
 
-    var addExpression = new MethodInvocation(
+    final Procedure addMethod = stmt.isYieldStar
+        ? helper.asyncStarStreamControllerAddStream
+        : helper.asyncStarStreamControllerAdd;
+    final FunctionType addMethodFunctionType = Substitution.fromInterfaceType(
+            controllerVariable!.type as InterfaceType)
+        .substituteType(addMethod.getterType) as FunctionType;
+    var addExpression = new InstanceInvocation(
+        InstanceAccessKind.Instance,
         new VariableGet(controllerVariable!),
-        new Name(stmt.isYieldStar ? 'addStream' : 'add', helper.asyncLibrary),
+        addMethod.name,
         new Arguments(<Expression>[expr]),
-        stmt.isYieldStar
-            ? helper.asyncStarStreamControllerAddStream
-            : helper.asyncStarStreamControllerAdd)
+        interfaceTarget: addMethod,
+        functionType: addMethodFunctionType)
       ..fileOffset = stmt.fileOffset;
 
     statements.add(new IfStatement(
@@ -1322,11 +1359,11 @@
     setupAsyncContinuations(statements);
 
     // :async_op();
-    final startStatement = ExpressionStatement(MethodInvocation(
-      VariableGet(nestedClosureVariable),
-      Name('call'),
-      Arguments([]),
-    )..fileOffset = enclosingFunction.fileOffset);
+    final startStatement = ExpressionStatement(LocalFunctionInvocation(
+        nestedClosureVariable, Arguments([]),
+        functionType: FunctionType(
+            [], const DynamicType(), staticTypeContext.nonNullable))
+      ..fileOffset = enclosingFunction.fileOffset);
     statements.add(startStatement);
 
     // :is_sync = true;
@@ -1390,11 +1427,11 @@
 class HelperNodes {
   final Procedure asyncErrorWrapper;
   final Library asyncLibrary;
-  final Member asyncStarStreamControllerAdd;
-  final Member asyncStarStreamControllerAddError;
-  final Member asyncStarStreamControllerAddStream;
+  final Procedure asyncStarStreamControllerAdd;
+  final Procedure asyncStarStreamControllerAddError;
+  final Procedure asyncStarStreamControllerAddStream;
   final Class asyncStarStreamControllerClass;
-  final Member asyncStarStreamControllerClose;
+  final Procedure asyncStarStreamControllerClose;
   final Constructor asyncStarStreamControllerConstructor;
   final Member asyncStarStreamControllerStream;
   final Procedure asyncStarMoveNextHelper;
@@ -1410,11 +1447,11 @@
   final Constructor futureImplConstructor;
   final Class iterableClass;
   final Class streamClass;
-  final Member streamIteratorCancel;
+  final Procedure streamIteratorCancel;
   final Class streamIteratorClass;
   final Constructor streamIteratorConstructor;
   final Member streamIteratorCurrent;
-  final Member streamIteratorMoveNext;
+  final Procedure streamIteratorMoveNext;
   final Constructor syncIterableConstructor;
   final Class syncIteratorClass;
   final Member syncIteratorCurrent;
diff --git a/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect b/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect
index 7d95c30..92b3481 100644
--- a/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect
+++ b/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect
@@ -67,7 +67,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -98,7 +98,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -135,7 +135,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -166,7 +166,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -207,7 +207,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -243,7 +243,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -280,7 +280,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -313,7 +313,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -346,7 +346,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -382,7 +382,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -418,7 +418,7 @@
       }
     :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
     :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
index 51ff150..8922930 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
@@ -31,7 +31,7 @@
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+    [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
     :is_sync = true;
     return :async_future;
   }
@@ -66,7 +66,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+  [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
@@ -97,7 +97,7 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  [@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
+  [@vm.call-site-attributes.metadata=receiverType:dynamic Function()*] :async_op(){() →* dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
index 7c87b13..3bd971f 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination_nnbd.dart.expect
@@ -21,9 +21,9 @@
 static method main() → void {
   final core::List<self::A> list = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A>] core::_GrowableList::_literal2<self::A>(new self::A::•("foo", null), [@vm.inferred-type.metadata=#lib::A?] self::staticField);
   {
-    core::Iterator<self::A> :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A>] list.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A a = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::A?] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::A> :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A>] list.{core::Iterable::iterator}{core::Iterator<self::A>};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A a = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::A?] :sync-for-iterator.{core::Iterator::current}{self::A};
       {
         self::testNonNullable(a);
         self::testNullable(a);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
index 4b302d6..7e7de62 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect
@@ -53,9 +53,9 @@
 static method main() → void {
   final core::List<self::A*>* list = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A*>] core::_GrowableList::_literal2<self::A*>(new self::A::•("foo", null), [@vm.inferred-type.metadata=#lib::A?] self::staticField);
   {
-    core::Iterator<self::A*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A*>] list.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A* a = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::A?] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::A*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A*>] list.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A* a = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::A?] :sync-for-iterator.{core::Iterator::current}{self::A*};
       {
         self::testNonNullableIf1(a);
         self::testNullableIf1(a);
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect
index 257f5c9..b0bcba0 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42413.dart.expect
@@ -19,9 +19,9 @@
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5]  @#C3
   method forIn() → void {
     {
-      core::Iterator<dynamic>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator??] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] _in::unsafeCast<core::Iterable<dynamic>*>([@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}{dynamic}).{core::Iterable::iterator};
-      for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-        dynamic e = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::B?] :sync-for-iterator.{core::Iterator::current};
+      core::Iterator<dynamic>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator??] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] _in::unsafeCast<core::Iterable<dynamic>*>([@vm.direct-call.metadata=#lib::A.list] [@vm.inferred-type.metadata=dart.core::_GrowableList?<#lib::B*>] this.{self::A::list}{dynamic}).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        dynamic e = [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=#lib::B?] :sync-for-iterator.{core::Iterator::current}{dynamic};
         core::print([@vm.direct-call.metadata=#lib::B.x??] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0) (receiver not int)] e{dynamic}.x);
       }
     }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect
index 8ddbcfa..16d4a2a 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect
@@ -38,9 +38,9 @@
   }
   final core::List<self::B*>* l = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::B*>] core::_GrowableList::_literal2<self::B*>(new self::B::•(), new self::C::•());
   {
-    core::Iterator<self::B*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] l.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::B* b = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] l.{core::Iterable::iterator}{core::Iterator<self::B*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::B* b = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::B*};
       {
         b.{self::B::foo}(13){(core::int*) →* void};
       }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect
index d10d4b7..dff8e38 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect
@@ -38,9 +38,9 @@
   }
   final core::List<self::B*>* l = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::B*>] core::_GrowableList::_literal2<self::B*>(new self::B::•(), new self::C::•());
   {
-    core::Iterator<self::B*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] l.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::B* b = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B*>] l.{core::Iterable::iterator}{core::Iterator<self::B*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::B* b = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::B*};
       {
         b.{self::B::bar}(13){(core::int*) →* void};
       }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect
index 6528201..39043c5 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/selector_id_assignments.dart.expect
@@ -103,49 +103,49 @@
 static method main() → dynamic {
   core::List<self::A1*>* x1 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A1*>] core::_GrowableList::_literal3<self::A1*>(new self::A1::•(), new self::B1::•(), new self::C1::•());
   {
-    core::Iterator<self::A1*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A1*>] x1.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A1* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::A1*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A1*>] x1.{core::Iterable::iterator}{core::Iterator<self::A1*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A1* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::A1*};
       o.{self::A1::foo}(){() →* void};
     }
   }
   core::List<self::A2*>* x2 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A2*>] core::_GrowableList::_literal2<self::A2*>(new self::A2::•(), new self::B2::•());
   {
-    core::Iterator<self::A2*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A2*>] x2.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A2* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::A2*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A2*>] x2.{core::Iterable::iterator}{core::Iterator<self::A2*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A2* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::A2*};
       o.{self::A2::foo}(){() →* void};
     }
   }
   core::List<self::A3*>* x3 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A3*>] core::_GrowableList::_literal2<self::A3*>(new self::B3::•(), new self::C3::•());
   {
-    core::Iterator<self::A3*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A3*>] x3.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A3* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::A3*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A3*>] x3.{core::Iterable::iterator}{core::Iterator<self::A3*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A3* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::A3*};
       o.{self::A3::foo}(){() →* void};
     }
   }
   core::List<self::A4*>* x4 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A4*>] core::_GrowableList::_literal2<self::A4*>(new self::A4::•(), new self::D4::•());
   {
-    core::Iterator<self::A4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A4*>] x4.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::A4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::A4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::A4*>] x4.{core::Iterable::iterator}{core::Iterator<self::A4*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::A4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::A4*};
       o.{self::A4::foo}(){() →* void};
     }
   }
   core::List<self::B4*>* y4 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::B4*>] core::_GrowableList::_literal3<self::B4*>(new self::B4::•(), new self::D4::•(), new self::E4::•());
   {
-    core::Iterator<self::B4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B4*>] y4.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::B4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::B4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::B4*>] y4.{core::Iterable::iterator}{core::Iterator<self::B4*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::B4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::B4*};
       o.{self::B4::foo}(){() →* void};
     }
   }
   core::List<self::C4*>* z4 = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::C4*>] core::_GrowableList::_literal2<self::C4*>(new self::C4::•(), new self::E4::•());
   {
-    core::Iterator<self::C4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::C4*>] z4.{core::Iterable::iterator};
-    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      self::C4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<self::C4*>* :sync-for-iterator = [@vm.direct-call.metadata=dart.core::_GrowableList.iterator] [@vm.inferred-type.metadata=dart._internal::ListIterator<#lib::C4*>] z4.{core::Iterable::iterator}{core::Iterator<self::C4*>*};
+    for (; [@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      self::C4* o = [@vm.direct-call.metadata=dart._internal::ListIterator.current] :sync-for-iterator.{core::Iterator::current}{self::C4*};
       [@vm.direct-call.metadata=#lib::C4.foo??] [@vm.inferred-type.metadata=!? (skip check)] o.{self::C4::foo}(){() →* void};
     }
   }
diff --git a/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect b/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect
index e61810f..e9346d5 100644
--- a/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect
+++ b/pkg/vm/testcases/transformations/unreachable_code_elimination/uce_testcases.dart.expect
@@ -67,9 +67,9 @@
   for (; ; ) {
   }
   {
-    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(1, 2).{core::Iterable::iterator};
-    for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
-      core::int* i = :sync-for-iterator.{core::Iterator::current};
+    core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(1, 2).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+    for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+      core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
     }
   }
   {}
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index 5dddbea..e6c3f73 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -3426,14 +3426,12 @@
       TypeParameters::Handle(Z, TypeParameters::New(type_parameter_count));
   const Type& null_bound = Type::Handle(Z);
 
-  intptr_t offset = 0;
   if (!parameterized_class.IsNull()) {
     ASSERT(parameterized_class.type_parameters() == TypeParameters::null());
     parameterized_class.set_type_parameters(type_parameters);
   } else {
     ASSERT(parameterized_signature.type_parameters() == TypeParameters::null());
     parameterized_signature.set_type_parameters(type_parameters);
-    offset = parameterized_signature.NumParentTypeArguments();
     if (!function.IsNull()) {
       function.SetNumTypeParameters(type_parameter_count);
     }
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index d2a757a..28eecaf 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -200,7 +200,7 @@
   V(::, reachabilityFence, ReachabilityFence, 0x619235c1)                      \
   V(_Utf8Decoder, _scan, Utf8DecoderScan, 0x1dcaf73d)                          \
   V(_Future, timeout, FutureTimeout, 0x73041520)                               \
-  V(Future, wait, FutureWait, 0xf0ce45c3)                                      \
+  V(Future, wait, FutureWait, 0xa05d5e7b)                                      \
   V(_RootZone, runUnary, RootZoneRunUnary, 0xa22248b6)                         \
   V(_FutureListener, handleValue, FutureListenerHandleValue, 0x438115a8)       \
   V(::, has63BitSmis, Has63BitSmis, 0xf61b5ab2)                                \
diff --git a/runtime/vm/heap/pointer_block.h b/runtime/vm/heap/pointer_block.h
index 5e7dde8..168a1cb 100644
--- a/runtime/vm/heap/pointer_block.h
+++ b/runtime/vm/heap/pointer_block.h
@@ -151,65 +151,78 @@
   typedef typename Stack::Block Block;
 
   explicit BlockWorkList(Stack* stack) : stack_(stack) {
-    work_ = stack_->PopEmptyBlock();
+    local_output_ = stack_->PopEmptyBlock();
+    local_input_ = stack_->PopEmptyBlock();
   }
 
   ~BlockWorkList() {
-    ASSERT(work_ == nullptr);
+    ASSERT(local_output_ == nullptr);
+    ASSERT(local_input_ == nullptr);
     ASSERT(stack_ == nullptr);
   }
 
   // Returns nullptr if no more work was found.
   ObjectPtr Pop() {
-    ASSERT(work_ != nullptr);
-    if (work_->IsEmpty()) {
-      // TODO(koda): Track over/underflow events and use in heuristics to
-      // distribute work and prevent degenerate flip-flopping.
-      Block* new_work = stack_->PopNonEmptyBlock();
-      if (new_work == nullptr) {
-        return nullptr;
+    ASSERT(local_input_ != nullptr);
+    if (UNLIKELY(local_input_->IsEmpty())) {
+      if (!local_output_->IsEmpty()) {
+        auto temp = local_output_;
+        local_output_ = local_input_;
+        local_input_ = temp;
+      } else {
+        Block* new_work = stack_->PopNonEmptyBlock();
+        if (new_work == nullptr) {
+          return nullptr;
+        }
+        stack_->PushBlock(local_input_);
+        local_input_ = new_work;
+        // Generated code appends to marking stacks; tell MemorySanitizer.
+        MSAN_UNPOISON(local_input_, sizeof(*local_input_));
       }
-      stack_->PushBlock(work_);
-      work_ = new_work;
-      // Generated code appends to marking stacks; tell MemorySanitizer.
-      MSAN_UNPOISON(work_, sizeof(*work_));
     }
-    return work_->Pop();
+    return local_input_->Pop();
   }
 
   void Push(ObjectPtr raw_obj) {
-    if (work_->IsFull()) {
-      // TODO(koda): Track over/underflow events and use in heuristics to
-      // distribute work and prevent degenerate flip-flopping.
-      stack_->PushBlock(work_);
-      work_ = stack_->PopEmptyBlock();
+    if (UNLIKELY(local_output_->IsFull())) {
+      stack_->PushBlock(local_output_);
+      local_output_ = stack_->PopEmptyBlock();
     }
-    work_->Push(raw_obj);
+    local_output_->Push(raw_obj);
   }
 
   void Finalize() {
-    ASSERT(work_->IsEmpty());
-    stack_->PushBlock(work_);
-    work_ = nullptr;
+    ASSERT(local_output_->IsEmpty());
+    stack_->PushBlock(local_output_);
+    local_output_ = nullptr;
+    ASSERT(local_input_->IsEmpty());
+    stack_->PushBlock(local_input_);
+    local_input_ = nullptr;
     // Fail fast on attempts to mark after finalizing.
     stack_ = nullptr;
   }
 
   void AbandonWork() {
-    stack_->PushBlock(work_);
-    work_ = nullptr;
+    stack_->PushBlock(local_output_);
+    local_output_ = nullptr;
+    stack_->PushBlock(local_input_);
+    local_input_ = nullptr;
     stack_ = nullptr;
   }
 
   bool IsEmpty() {
-    if (!work_->IsEmpty()) {
+    if (!local_input_->IsEmpty()) {
+      return false;
+    }
+    if (!local_output_->IsEmpty()) {
       return false;
     }
     return stack_->IsEmpty();
   }
 
  private:
-  Block* work_;
+  Block* local_output_;
+  Block* local_input_;
   Stack* stack_;
 };
 
diff --git a/tools/VERSION b/tools/VERSION
index 711c5dd..b0fb44a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 194
+PRERELEASE 195
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 9f22437..1b2d05a 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -2608,7 +2608,7 @@
           "arguments": [
             "-ndart2js-o0-linux-d8",
             "--dart2js-batch",
-            "dart2js_2"
+            "web_2"
           ]
         },
         {
@@ -2616,7 +2616,7 @@
           "arguments": [
             "-ndart2js-modern-linux-d8",
             "--dart2js-batch",
-            "dart2js_2"
+            "web_2"
           ]
         },
         {