diff --git a/.packages b/.packages
index e5e9d80..b459b60 100644
--- a/.packages
+++ b/.packages
@@ -23,12 +23,11 @@
 cli_util:third_party/pkg/cli_util/lib
 collection:third_party/pkg/collection/lib
 compiler:pkg/compiler/lib
-# Compiler is imported as compiler_unsupported so it can work outside the SDK.
-compiler_unsupported:pkg/compiler/lib
 convert:third_party/pkg/convert/lib
 crypto:third_party/pkg/crypto/lib
 csslib:third_party/pkg/csslib/lib
 dart2js_info:third_party/pkg/dart2js_info/lib
+dart2js_tools:pkg/dart2js_tools/lib
 dart_internal:pkg/dart_internal/lib
 dart_messages:pkg/dart_messages/lib
 dart_style:third_party/pkg_tested/dart_style/lib
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3593c59..ea563d2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 2.1.0-dev.1.0
+
+### Tool Changes
+
+#### Pub
+
+* Rename the `--checked` flag to `pub run` to `--enable-asserts`.
+
 ## 2.1.0-dev.0.0
 
 ### Tool Changes
@@ -7,7 +15,20 @@
 *   Pub will no longer delete directories named "packages".
 *   The `--packages-dir` flag is now ignored.
 
-## 2.0.0
+#### dart2js
+
+*   Added `-O` flag to tune optimization levels.  For more details run `dart2js
+    -h -v`.
+
+    We recommend to enable optimizations using the `-O` flag instead of
+    individual flags for each optimization. This is because the `-O` flag is
+    intended to be stable and continue to work in future versions of dart2js,
+    while individual flags may come and go.
+
+    At this time we recommend to test and debug with `-O1` and to deploy with
+    `-O3`.
+
+## 2.0.0 - 2018-08-07
 
 This is the first major version release of Dart since 1.0.0, so it contains many
 significant changes across all areas of the platform. Large changes include:
@@ -641,7 +662,7 @@
 [pub#1795]: https://github.com/dart-lang/pub/issues/1795
 [pub#1823]: https://github.com/dart-lang/pub/issues/1823
 
-## 1.24.3 - 14-12-2017
+## 1.24.3 - 2017-12-14
 
 * Fix for constructing a new SecurityContext that contains the built-in
   certificate authority roots
@@ -655,7 +676,7 @@
     `SecureSocket`, `SecurityContext`, and `X509Certificate` properties and
     methods are now supported on iOS and OSX.
 
-## 1.24.2 - 22-06-2017
+## 1.24.2 - 2017-06-22
 
 * Fixes for debugging in Dartium.
   * Fix DevConsole crash with JS
@@ -663,7 +684,7 @@
   * Fix debugging in WebStorm, NULL returned for JS objects
     ([issue 29854](https://github.com/dart-lang/sdk/issues/29854)).
 
-## 1.24.1 - 14-06-2017
+## 1.24.1 - 2017-06-14
 
 * Bug fixes for dartdevc support in `pub serve`.
   * Fixed module config invalidation logic so modules are properly
@@ -677,7 +698,7 @@
 * Fix for a Dartium issue where there was no sound in checked mode
   ([issue 29810](https://github.com/dart-lang/sdk/issues/29810)).
 
-## 1.24.0 - 12-06-2017
+## 1.24.0 - 2017-06-12
 
 ### Language
 * During a dynamic type check, `void` is not required to be `null` anymore.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..88ffd12
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,117 @@
+Want to contribute? Great! First, read this page (including the small print at the end).
+
+## Ways you can contribute
+
+You can help the Dart project in many ways, in addition to contributing code. For example, you can [report bugs](http://dartbug.com), ask and answer [Dart questions on StackOverflow](http://stackoverflow.com/questions/tagged/dart), and improve the documentation.
+
+If you'd like to improve the documentation, you have three options:
+
+  * Give us feedback:
+    * If you're looking at a page with a **bug icon** at the **upper right**,
+      click that icon to report a bug on the page.
+    * To report an API doc bug,
+      [create an SDK issue](https://github.com/dart-lang/sdk/issues/new?title=API%20doc%20issue:).
+  * Contribute to the Dart developer websites such as [www.dartlang.org](https://www.dartlang.org) (repo: [dart-lang/site-www](https://github.com/dart-lang/site-www)) and [webdev.dartlang.org](https://webdev.dartlang.org) (repo: [dart-lang/site-webdev](https://github.com/dart-lang/site-webdev)). For more information, see [Writing for *.dartlang.org](https://github.com/dart-lang/site-www/wiki/Writing-for-dartlang.org).
+  * Improve the API reference docs at [api.dartlang.org](https://api.dartlang.org) by editing doc comments in the [Dart SDK repo](https://github.com/dart-lang/sdk/tree/master/sdk/lib). For more information on how to write API docs, see [Effective Dart: Documentation](https://www.dartlang.org/guides/language/effective-dart/documentation).
+
+## Before you contribute
+
+Before we can use your code, you must sign the [Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual) (CLA), which you can do online.  The CLA is necessary mainly because you own the copyright to your changes, even after your contribution becomes part of our codebase, so we need your permission to use and distribute your code.  We also need to be sure of various other things—for instance that you'll tell us if you know that your code infringes on other people's patents.  You don't have to sign the CLA until after you've submitted your code for review and a member has approved it, but you must do it before we can put your code into our codebase.
+
+Before you start working on a larger contribution, you should get in touch with us first through the  [Dart Issue Tracker](http://dartbug.com) with your idea so that we can help out and possibly guide you. Coordinating up front makes it much easier to avoid frustration later on.
+
+All submissions, including submissions by project members, require review.  We use the same code-review tools and process as the chromium project.  In order to submit a patch, you need to get the [depot\_tools](http://dev.chromium.org/developers/how-tos/depottools).
+
+We occasionally take pull requests, e.g., for comment changes, but the main flow is to use the Rietveld review system as explained below.
+
+## Getting the code
+
+To work with the Dart code, you need to download and build the development branch. Active development of Dart takes place on the `master` branch, from which we push "green" versions that have passed all tests to `dev` branch. Complete instructions are found at [Getting The Source](https://github.com/dart-lang/sdk/wiki/Building#getting-the-source)
+
+## Starting a patch with git
+
+Note: you can be in any branch when you run `git new-branch`
+
+```bash
+git new-branch <feature name>
+<write code>
+git commit
+<write code...>
+git commit
+...
+```
+
+## Keeping your branch updated with origin/master
+
+As you work, and before you send a patch for review, you should
+ensure your branch is merging cleanly to `origin/master`.
+
+There are multiple ways to do this, but we generally recommend
+running:
+
+```bash
+git rebase-update
+```
+
+Note: you can run this command from any branch.
+
+This command will fetch
+origin/master, rebase all your open branches, and delete
+cleanly merged branches.
+
+Your local workflow may vary.
+
+## Uploading the patch for review
+
+Upload the patch for review:
+
+```bash
+git cl upload -s
+```
+
+The above command returns a URL for the review. Attach this review to your issue in http://dartbug.com
+
+If you have commit access, when the review is done and the patch is good to go, submit the patch on https://dart-review.googlesource.com:
+
+```bash
+git cl web # opens your review on https://dart-review.googlesource.com
+```
+
+*   Press "Submit to CQ" (CQ stands for "Commit Queue").
+*   You can follow the progress by looking at the "Tryjobs" panel in your review.
+*   Once the Commit Queue is green, the patch will be merged.
+*   If any of the try jobs is red, you will have to fix the errors and then "Submit to CQ" once more.
+
+If you do not have commit access, a Dart engineer will commit on your behalf, assuming the patch is reviewed and accepted.
+
+More detailed instructions for the `git cl` tools available on http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_creating_uploading_a_cl
+
+## For committers: Merging external contributions
+
+If the author of a patch is not a committer, they will need help landing the patch.
+Once a patch gets an LGTM, it's easy for a committer to merge it in.
+
+* Find and open the review on https://dart-review.googlesource.com.
+* Follow the instructions in the previous section to submit the patch.
+
+## Coding style
+
+The source code of Dart follows the:
+
+  * [Google C++ style guide](https://google.github.io/styleguide/cppguide.html)
+  * [Dart style guide](https://www.dartlang.org/articles/style-guide/)
+
+You should familiarize yourself with those guidelines.
+
+All files in the Dart project must start with the following header. If you add a new file please also add this. The year should be a single number (not a range; don't use "2011-2012", even if the original code did).  If you edit an existing file you don't have to update the year
+
+```dart
+// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+```
+
+
+## The small print
+
+Contributions made by corporations are covered by a different agreement than the one above, the [Software Grant and Corporate Contributor License Agreement](http://code.google.com/legal/corporate-cla-v1.0.html).
diff --git a/DEPS b/DEPS
index 1d51a0d..3edb035 100644
--- a/DEPS
+++ b/DEPS
@@ -37,7 +37,7 @@
   "fuchsia_git": "https://fuchsia.googlesource.com",
 
   "co19_rev": "9858ee7d79cf09b50d6b5bc13fb950ae5f357954",
-  "co19_2_rev": "bafb589613379dc1f2e3511566661a5c6250486a",
+  "co19_2_rev": "afadfe417b85037281a770b477f42c3786a8666a",
 
   # As Flutter does, we pull buildtools, including the clang toolchain, from
   # Fuchsia. This revision should be kept up to date with the revision pulled
@@ -95,7 +95,7 @@
   "intl_tag": "0.15.6",
   "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_tag": "2.0.9",
-  "linter_tag": "0.1.58",
+  "linter_tag": "0.1.59",
   "logging_tag": "0.11.3+2",
   "markdown_tag": "2.0.2",
   "matcher_tag": "0.12.3",
@@ -111,7 +111,7 @@
   "ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
   "pool_tag": "1.3.6",
   "protobuf_tag": "0.9.0",
-  "pub_rev": "5962908a66e814dd78f6856a4e5f792c6db65fbc",
+  "pub_rev": "9f00679ef47bc79cadc18e143720ade6c06c0100",
   "pub_semver_tag": "1.4.2",
   "quiver_tag": "0.29.0+2",
   "resource_rev": "2.1.5",
diff --git a/docs/language/informal/README.md b/docs/language/informal/README.md
index 5774998..ed534fb 100644
--- a/docs/language/informal/README.md
+++ b/docs/language/informal/README.md
@@ -1,5 +1,9 @@
 This directory contains "informal specifications".
 
+**Note**: This directory is no longer where new language proposals are
+discussed. Instead, new language proposals should be submitted to
+[dart-lang/language](https://github.com/dart-lang/language).
+
 In order to move faster and get better feedback, we implement and iterate on
 language changes before the full official specification has been written. Still,
 the implementers need *something* to go on.
diff --git a/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart b/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
index 7640ff1..940a344 100644
--- a/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
+++ b/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
@@ -44,7 +44,7 @@
     await test.analysisFinished;
 
     stopwatch.stop();
-    int usedBytes = test.getMemoryUsage();
+    int usedBytes = await test.getMemoryUsage();
 
     CompoundBenchMarkResult result = new CompoundBenchMarkResult(id);
     result.add('analysis',
@@ -88,7 +88,7 @@
     await test.analysisFinished;
 
     stopwatch.stop();
-    int usedBytes = test.getMemoryUsage();
+    int usedBytes = await test.getMemoryUsage();
 
     CompoundBenchMarkResult result = new CompoundBenchMarkResult(id);
     result.add('warm-analysis',
diff --git a/pkg/analysis_server/benchmark/perf/memory_tests.dart b/pkg/analysis_server/benchmark/perf/memory_tests.dart
index 7c8ac58..4cb8b7f 100644
--- a/pkg/analysis_server/benchmark/perf/memory_tests.dart
+++ b/pkg/analysis_server/benchmark/perf/memory_tests.dart
@@ -3,11 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:convert';
-import 'dart:io';
 import 'dart:math';
 
 import 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:analysis_server/src/status/diagnostics.dart';
 import 'package:test/test.dart';
 
 import '../../test/integration/support/integration_tests.dart';
@@ -33,21 +32,26 @@
     extends AbstractAnalysisServerIntegrationTest {
   static const int vmServicePort = 12345;
 
-  int getMemoryUsage() {
-    String vmService =
-        'http://localhost:$vmServicePort/_getAllocationProfile\?isolateId=isolates/root\&gc=full';
-    ProcessResult result;
-    if (Platform.isWindows) {
-      result = _run(
-          'powershell', <String>['-Command', '(curl "$vmService").Content']);
-    } else {
-      result = _run('curl', <String>[vmService]);
+  Future<int> getMemoryUsage() async {
+    Uri uri = Uri.parse('ws://127.0.0.1:$vmServicePort/ws');
+    final ServiceProtocol service = await ServiceProtocol.connect(uri);
+    final Map vm = await service.call('getVM');
+
+    int total = 0;
+
+    List isolateRefs = vm['isolates'];
+    for (Map isolateRef in isolateRefs) {
+      Map isolate =
+          await service.call('getIsolate', {'isolateId': isolateRef['id']});
+
+      Map _heaps = isolate['_heaps'];
+      total += _heaps['new']['used'] + _heaps['new']['external'];
+      total += _heaps['old']['used'] + _heaps['old']['external'];
     }
-    Map jsonData = json.decode(result.stdout);
-    Map heaps = jsonData['result']['heaps'];
-    int newSpace = heaps['new']['used'];
-    int oldSpace = heaps['old']['used'];
-    return newSpace + oldSpace;
+
+    service.dispose();
+
+    return total;
   }
 
   /**
@@ -95,42 +99,4 @@
   Future subscribeToStatusNotifications() async {
     await sendServerSetSubscriptions([ServerService.STATUS]);
   }
-
-  /**
-   * Synchronously run the given [executable] with the given [arguments]. Return
-   * the result of running the process.
-   */
-  ProcessResult _run(String executable, List<String> arguments) {
-    return Process.runSync(executable, arguments,
-        stderrEncoding: utf8, stdoutEncoding: utf8);
-  }
-
-  /**
-   *  1. Start Analysis Server.
-   *  2. Set the analysis [roots].
-   *  3. Wait for analysis to complete.
-   *  4. Record the heap size after analysis is finished.
-   *  5. Shutdown.
-   *  6. Go to (1).
-   */
-  static Future<List<int>> start_waitInitialAnalysis_shutdown(
-      {List<String> roots, int numOfRepeats}) async {
-    outOfTestExpect(roots, isNotNull, reason: 'roots');
-    outOfTestExpect(numOfRepeats, isNotNull, reason: 'numOfRepeats');
-    // Repeat.
-    List<int> sizes = <int>[];
-    for (int i = 0; i < numOfRepeats; i++) {
-      AnalysisServerMemoryUsageTest test = new AnalysisServerMemoryUsageTest();
-      // Initialize Analysis Server.
-      await test.setUp();
-      await test.subscribeToStatusNotifications();
-      // Set roots and analyze.
-      await test.sendAnalysisSetAnalysisRoots(roots, []);
-      await test.analysisFinished;
-      sizes.add(test.getMemoryUsage());
-      // Stop the server.
-      await test.shutdown();
-    }
-    return sizes;
-  }
 }
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 9f0e56b..89d2fea 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -339,11 +339,6 @@
   DiagnosticServer diagnosticServer;
 
   /**
-   * The analytics instance; note, this object can be `null`.
-   */
-  telemetry.Analytics get analytics => options.analytics;
-
-  /**
    * Initialize a newly created server to receive requests from and send
    * responses to the given [channel].
    *
@@ -373,7 +368,7 @@
     defaultContextOptions.generateImplicitErrors = false;
     defaultContextOptions.useFastaParser =
         options.useCFE || options.useFastaParser;
-    defaultContextOptions.previewDart2 = options.previewDart2;
+    defaultContextOptions.useCFE = options.useCFE;
 
     {
       String name = options.newAnalysisDriverLog;
@@ -443,6 +438,11 @@
   }
 
   /**
+   * The analytics instance; note, this object can be `null`.
+   */
+  telemetry.Analytics get analytics => options.analytics;
+
+  /**
    * Return a list of the globs used to determine which files should be analyzed.
    */
   List<Glob> get analyzedFilesGlobs {
@@ -1008,7 +1008,7 @@
     return contextManager.isInAnalysisRoot(file);
   }
 
-  Future<Null> shutdown() async {
+  Future<void> shutdown() async {
     running = false;
 
     if (options.analytics != null) {
@@ -1189,11 +1189,6 @@
   CrashReportSender crashReportSender;
 
   /**
-   * Whether to enable the Dart 2.0 preview.
-   */
-  bool previewDart2 = false;
-
-  /**
    * Whether to enable the Dart 2.0 Common Front End implementation.
    */
   bool useCFE = false;
@@ -1426,7 +1421,6 @@
     builder.performanceLog = analysisServer._analysisPerformanceLogger;
     builder.byteStore = analysisServer.byteStore;
     builder.fileContentOverlay = analysisServer.fileContentOverlay;
-    builder.previewDart2 = analysisServer.options.previewDart2;
     builder.useCFE = analysisServer.options.useCFE;
     return builder;
   }
diff --git a/pkg/analysis_server/lib/src/domain_analysis.dart b/pkg/analysis_server/lib/src/domain_analysis.dart
index a308777..a8e0598 100644
--- a/pkg/analysis_server/lib/src/domain_analysis.dart
+++ b/pkg/analysis_server/lib/src/domain_analysis.dart
@@ -45,7 +45,7 @@
   /**
    * Implement the `analysis.getErrors` request.
    */
-  Future<Null> getErrors(Request request) async {
+  Future<void> getErrors(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     String file = new AnalysisGetErrorsParams.fromRequest(request).file;
@@ -79,7 +79,7 @@
   /**
    * Implement the `analysis.getHover` request.
    */
-  Future<Null> getHover(Request request) async {
+  Future<void> getHover(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var params = new AnalysisGetHoverParams.fromRequest(request);
@@ -106,7 +106,7 @@
   /**
    * Implement the `analysis.getImportedElements` request.
    */
-  Future<Null> getImportedElements(Request request) async {
+  Future<void> getImportedElements(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AnalysisGetImportedElementsParams params =
@@ -164,7 +164,7 @@
   /**
    * Implement the `analysis.getNavigation` request.
    */
-  Future<Null> getNavigation(Request request) async {
+  Future<void> getNavigation(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var params = new AnalysisGetNavigationParams.fromRequest(request);
@@ -251,7 +251,7 @@
   /**
    * Implement the `analysis.getSignature` request.
    */
-  Future<Null> getSignature(Request request) async {
+  Future<void> getSignature(Request request) async {
     var params = new AnalysisGetSignatureParams.fromRequest(request);
 
     // Prepare the resolved units.
diff --git a/pkg/analysis_server/lib/src/domain_completion.dart b/pkg/analysis_server/lib/src/domain_completion.dart
index f634061..d4bd1c2 100644
--- a/pkg/analysis_server/lib/src/domain_completion.dart
+++ b/pkg/analysis_server/lib/src/domain_completion.dart
@@ -91,8 +91,7 @@
       performance.logStartTime(COMPUTE_SUGGESTIONS_TAG);
 
       CompletionContributor contributor = new DartCompletionManager();
-      String contributorTag = 'computeSuggestions - ${contributor
-          .runtimeType}';
+      String contributorTag = 'computeSuggestions - ${contributor.runtimeType}';
       performance.logStartTime(contributorTag);
       try {
         suggestions.addAll(await contributor.computeSuggestions(request));
@@ -162,7 +161,7 @@
   /**
    * Process a `completion.getSuggestions` request.
    */
-  Future<Null> processRequest(Request request) async {
+  Future<void> processRequest(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     performance = new CompletionPerformance();
diff --git a/pkg/analysis_server/lib/src/domain_kythe.dart b/pkg/analysis_server/lib/src/domain_kythe.dart
index 2529bb1..4b7447d 100644
--- a/pkg/analysis_server/lib/src/domain_kythe.dart
+++ b/pkg/analysis_server/lib/src/domain_kythe.dart
@@ -34,7 +34,7 @@
   /**
    * Implement the `kythe.getKytheEntries` request.
    */
-  Future<Null> getKytheEntries(Request request) async {
+  Future<void> getKytheEntries(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     String file = new KytheGetKytheEntriesParams.fromRequest(request).file;
diff --git a/pkg/analysis_server/lib/src/domain_server.dart b/pkg/analysis_server/lib/src/domain_server.dart
index ccd12bc..39497ac 100644
--- a/pkg/analysis_server/lib/src/domain_server.dart
+++ b/pkg/analysis_server/lib/src/domain_server.dart
@@ -66,7 +66,7 @@
   /**
    * Cleanly shutdown the analysis server.
    */
-  Future<Null> shutdown(Request request) async {
+  Future<void> shutdown(Request request) async {
     await server.shutdown();
     Response response = new ServerShutdownResult().toResponse(request.id);
     server.sendResponse(response);
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart
index 12f358e..80cb8d2 100644
--- a/pkg/analysis_server/lib/src/edit/edit_domain.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -380,7 +380,7 @@
   /**
    * Implement the `edit.importElements` request.
    */
-  Future<Null> importElements(Request request) async {
+  Future<void> importElements(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     EditImportElementsParams params =
@@ -462,7 +462,7 @@
     server.sendResponse(response);
   }
 
-  Future<Null> organizeDirectives(Request request) async {
+  Future<void> organizeDirectives(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     server.options.analytics?.sendEvent('edit', 'organizeDirectives');
@@ -499,7 +499,7 @@
         new EditOrganizeDirectivesResult(fileEdit).toResponse(request.id));
   }
 
-  Future<Null> sortMembers(Request request) async {
+  Future<void> sortMembers(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var params = new EditSortMembersParams.fromRequest(request);
diff --git a/pkg/analysis_server/lib/src/operation/operation_analysis.dart b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
index a103f5c..32b9153 100644
--- a/pkg/analysis_server/lib/src/operation/operation_analysis.dart
+++ b/pkg/analysis_server/lib/src/operation/operation_analysis.dart
@@ -18,7 +18,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/generated/source.dart';
 
-Future<Null> scheduleImplementedNotification(
+Future<void> scheduleImplementedNotification(
     AnalysisServer server, Iterable<String> files) async {
   // TODO(brianwilkerson) Determine whether this await is necessary.
   await null;
diff --git a/pkg/analysis_server/lib/src/plugin/plugin_manager.dart b/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
index 3a3bf2a..6f95fd4a 100644
--- a/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
+++ b/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
@@ -262,11 +262,11 @@
   /**
    * Request that the plugin shutdown.
    */
-  Future<Null> stop() {
+  Future<void> stop() {
     if (currentSession == null) {
       throw new StateError('Cannot stop a plugin that is not running.');
     }
-    Future<Null> doneFuture = currentSession.stop();
+    Future<void> doneFuture = currentSession.stop();
     currentSession = null;
     return doneFuture;
   }
@@ -378,7 +378,7 @@
    * used when analyzing code for the given [contextRoot]. If the plugin had not
    * yet been started, then it will be started by this method.
    */
-  Future<Null> addPluginToContextRoot(
+  Future<void> addPluginToContextRoot(
       analyzer.ContextRoot contextRoot, String path) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -517,10 +517,10 @@
     if (parentFolder.exists) {
       Folder executionFolder =
           parentFolder.getChildAssumingFolder(pluginFolder.shortName);
-      return _computePaths(executionFolder);
+      return _computePaths(executionFolder, pubCommand: 'upgrade');
     }
     Folder executionFolder = pluginFolder.copyTo(parentFolder);
-    return _computePaths(executionFolder, runPub: true);
+    return _computePaths(executionFolder, pubCommand: 'get');
   }
 
   /**
@@ -577,7 +577,7 @@
   /**
    * Restart all currently running plugins.
    */
-  Future<Null> restartPlugins() async {
+  Future<void> restartPlugins() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     for (PluginInfo plugin in _pluginMap.values.toList()) {
@@ -674,16 +674,18 @@
   /**
    * Stop all of the plugins that are currently running.
    */
-  Future<List<Null>> stopAll() {
+  Future<List<void>> stopAll() {
     return Future.wait(_pluginMap.values.map((PluginInfo info) => info.stop()));
   }
 
   /**
    * Compute the paths to be returned by the enclosing method given that the
    * plugin should exist in the given [pluginFolder].
+   *
+   * Runs pub if [pubCommand] is provided and not null.
    */
   List<String> _computePaths(Folder pluginFolder,
-      {bool runPub: false, Workspace workspace}) {
+      {String pubCommand, Workspace workspace}) {
     File pluginFile = pluginFolder
         .getChildAssumingFolder('bin')
         .getChildAssumingFile('plugin.dart');
@@ -692,23 +694,21 @@
     }
     String reason;
     File packagesFile = pluginFolder.getChildAssumingFile('.packages');
-    bool packagesFilePreExists = packagesFile.exists;
-    if (runPub) {
+    if (pubCommand != null) {
       String vmPath = Platform.executable;
       String pubPath = path.join(path.dirname(vmPath), 'pub');
       if (Platform.isWindows) {
         // Process.run requires the `.bat` suffix on Windows
         pubPath = '$pubPath.bat';
       }
-      String pubSubcommand = packagesFilePreExists ? 'upgrade' : 'get';
-      ProcessResult result = Process.runSync(pubPath, <String>[pubSubcommand],
+      ProcessResult result = Process.runSync(pubPath, <String>[pubCommand],
           stderrEncoding: utf8,
           stdoutEncoding: utf8,
           workingDirectory: pluginFolder.path,
           environment: {_pubEnvironmentKey: _getPubEnvironmentValue()});
       if (result.exitCode != 0) {
         StringBuffer buffer = new StringBuffer();
-        buffer.writeln('Failed to run pub $pubSubcommand');
+        buffer.writeln('Failed to run pub $pubCommand');
         buffer.writeln('  pluginFolder = ${pluginFolder.path}');
         buffer.writeln('  exitCode = ${result.exitCode}');
         buffer.writeln('  stdout = ${result.stdout}');
@@ -720,7 +720,7 @@
         reason ??= 'File "${packagesFile.path}" does not exist.';
         packagesFile = null;
       }
-    } else if (!packagesFilePreExists) {
+    } else if (!packagesFile.exists) {
       if (workspace != null) {
         packagesFile =
             _createPackagesFile(pluginFolder, workspace.packageUriResolver);
@@ -895,7 +895,7 @@
   /**
    * The completer used to signal when the plugin has stopped.
    */
-  Completer<Null> pluginStoppedCompleter = new Completer<Null>();
+  Completer<void> pluginStoppedCompleter = new Completer<void>();
 
   /**
    * The channel used to communicate with the plugin.
@@ -955,7 +955,7 @@
   /**
    * Return a future that will complete when the plugin has stopped.
    */
-  Future<Null> get onDone => pluginStoppedCompleter.future;
+  Future<void> get onDone => pluginStoppedCompleter.future;
 
   /**
    * Handle the given [notification].
@@ -1105,7 +1105,7 @@
   /**
    * Request that the plugin shutdown.
    */
-  Future<Null> stop() {
+  Future<void> stop() {
     if (channel == null) {
       throw new StateError('Cannot stop a plugin that is not running.');
     }
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 8f475bd..6dcfee7 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -256,11 +256,6 @@
   static const String CACHE_FOLDER = "cache";
 
   /**
-   * Whether to enable the Dart 2.0 preview.
-   */
-  static const String PREVIEW_DART2 = "preview-dart-2";
-
-  /**
    * Whether to enable the Dart 2.0 Common Front End implementation.
    */
   static const String USE_CFE = "use-cfe";
@@ -318,11 +313,6 @@
     analysisServerOptions.clientId = results[CLIENT_ID];
     analysisServerOptions.clientVersion = results[CLIENT_VERSION];
     analysisServerOptions.cacheFolder = results[CACHE_FOLDER];
-    if (results.wasParsed(PREVIEW_DART2)) {
-      analysisServerOptions.previewDart2 = results[PREVIEW_DART2];
-    } else {
-      analysisServerOptions.previewDart2 = true;
-    }
     analysisServerOptions.useCFE = results[USE_CFE];
     analysisServerOptions.useFastaParser = results[USE_FASTA_PARSER];
 
@@ -596,7 +586,8 @@
         defaultsTo: "as-is");
     parser.addOption(CACHE_FOLDER,
         help: "[path] path to the location where to cache data");
-    parser.addFlag(PREVIEW_DART2, help: "Enable the Dart 2.0 preview");
+    parser.addFlag("preview-dart-2",
+        help: "Enable the Dart 2.0 preview (deprecated)", hide: true);
     parser.addFlag(USE_CFE,
         help: "Enable the Dart 2.0 Common Front End implementation");
     parser.addFlag(USE_FASTA_PARSER,
diff --git a/pkg/analysis_server/lib/src/server/http_server.dart b/pkg/analysis_server/lib/src/server/http_server.dart
index 783cb9c..aee5eb0 100644
--- a/pkg/analysis_server/lib/src/server/http_server.dart
+++ b/pkg/analysis_server/lib/src/server/http_server.dart
@@ -130,7 +130,7 @@
   /**
    * Handle a GET request received by the HTTP server.
    */
-  Future<Null> _handleGetRequest(HttpRequest request) async {
+  Future<void> _handleGetRequest(HttpRequest request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (getHandler == null) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
index 6c574b0..98a841a 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
@@ -66,9 +66,7 @@
 
   @override
   visitConstructorElement(ConstructorElement element) {
-    if (element.context.analysisOptions.previewDart2) {
-      _addSuggestion(element);
-    }
+    _addSuggestion(element);
   }
 
   @override
diff --git a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
index 78d0f14..d8e7aa4 100644
--- a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
+++ b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
@@ -137,7 +137,7 @@
   AstNode node;
   StatementCompletion completion;
   SourceChange change = new SourceChange('statement-completion');
-  List errors = <engine.AnalysisError>[];
+  List<engine.AnalysisError> errors = [];
   final Map<String, LinkedEditGroup> linkedPositionGroups =
       <String, LinkedEditGroup>{};
   Position exitPosition = null;
diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
index 3a773af..78aecdb 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -220,7 +220,7 @@
     assists.add(new Assist(kind, change));
   }
 
-  Future<Null> _addProposal_addTypeAnnotation_DeclaredIdentifier() async {
+  Future<void> _addProposal_addTypeAnnotation_DeclaredIdentifier() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DeclaredIdentifier declaredIdentifier =
@@ -271,7 +271,7 @@
     }
   }
 
-  Future<Null> _addProposal_addTypeAnnotation_SimpleFormalParameter() async {
+  Future<void> _addProposal_addTypeAnnotation_SimpleFormalParameter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -313,7 +313,7 @@
     }
   }
 
-  Future<Null> _addProposal_addTypeAnnotation_VariableDeclaration() async {
+  Future<void> _addProposal_addTypeAnnotation_VariableDeclaration() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -376,7 +376,7 @@
     }
   }
 
-  Future<Null> _addProposal_assignToLocalVariable() async {
+  Future<void> _addProposal_assignToLocalVariable() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare enclosing ExpressionStatement
@@ -431,7 +431,7 @@
     }
   }
 
-  Future<Null> _addProposal_convertDocumentationIntoBlock() async {
+  Future<void> _addProposal_convertDocumentationIntoBlock() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     Comment comment = node.getAncestor((n) => n is Comment);
@@ -464,7 +464,7 @@
         changeBuilder, DartAssistKind.CONVERT_DOCUMENTATION_INTO_BLOCK);
   }
 
-  Future<Null> _addProposal_convertDocumentationIntoLine() async {
+  Future<void> _addProposal_convertDocumentationIntoLine() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     Comment comment = node.getAncestor((n) => n is Comment);
@@ -525,7 +525,7 @@
         changeBuilder, DartAssistKind.CONVERT_DOCUMENTATION_INTO_LINE);
   }
 
-  Future<Null> _addProposal_convertIntoFinalField() async {
+  Future<void> _addProposal_convertIntoFinalField() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // Find the enclosing getter.
@@ -596,7 +596,7 @@
     }
   }
 
-  Future<Null> _addProposal_convertIntoGetter() async {
+  Future<void> _addProposal_convertIntoGetter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // Find the enclosing field declaration.
@@ -647,7 +647,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.CONVERT_INTO_GETTER);
   }
 
-  Future<Null> _addProposal_convertPartOfToUri() async {
+  Future<void> _addProposal_convertPartOfToUri() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     PartOfDirective directive =
@@ -667,7 +667,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.CONVERT_PART_OF_TO_URI);
   }
 
-  Future<Null> _addProposal_convertToAsyncFunctionBody() async {
+  Future<void> _addProposal_convertToAsyncFunctionBody() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     FunctionBody body = getEnclosingFunctionBody();
@@ -700,7 +700,7 @@
         changeBuilder, DartAssistKind.CONVERT_INTO_ASYNC_BODY);
   }
 
-  Future<Null> _addProposal_convertToBlockFunctionBody() async {
+  Future<void> _addProposal_convertToBlockFunctionBody() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     FunctionBody body = getEnclosingFunctionBody();
@@ -745,13 +745,13 @@
         changeBuilder, DartAssistKind.CONVERT_INTO_BLOCK_BODY);
   }
 
-  Future<Null> _addProposal_convertToDoubleQuotedString() async {
+  Future<void> _addProposal_convertToDoubleQuotedString() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     await _convertQuotes(false, DartAssistKind.CONVERT_TO_DOUBLE_QUOTED_STRING);
   }
 
-  Future<Null> _addProposal_convertToExpressionFunctionBody() async {
+  Future<void> _addProposal_convertToExpressionFunctionBody() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare current body
@@ -804,7 +804,7 @@
         changeBuilder, DartAssistKind.CONVERT_INTO_EXPRESSION_BODY);
   }
 
-  Future<Null> _addProposal_convertToFieldParameter() async {
+  Future<void> _addProposal_convertToFieldParameter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node == null) {
@@ -898,7 +898,7 @@
     }
   }
 
-  Future<Null> _addProposal_convertToForIndexLoop() async {
+  Future<void> _addProposal_convertToForIndexLoop() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // find enclosing ForEachStatement
@@ -978,7 +978,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.CONVERT_INTO_FOR_INDEX);
   }
 
-  Future<Null> _addProposal_convertToGenericFunctionSyntax() async {
+  Future<void> _addProposal_convertToGenericFunctionSyntax() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -998,7 +998,7 @@
     }
   }
 
-  Future<Null> _addProposal_convertToIsNot_onIs() async {
+  Future<void> _addProposal_convertToIsNot_onIs() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // may be child of "is"
@@ -1051,7 +1051,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.CONVERT_INTO_IS_NOT);
   }
 
-  Future<Null> _addProposal_convertToIsNot_onNot() async {
+  Future<void> _addProposal_convertToIsNot_onNot() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // may be () in prefix expression
@@ -1107,7 +1107,7 @@
   /**
    * Converts "!isEmpty" -> "isNotEmpty" if possible.
    */
-  Future<Null> _addProposal_convertToIsNotEmpty() async {
+  Future<void> _addProposal_convertToIsNotEmpty() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare "expr.isEmpty"
@@ -1167,7 +1167,7 @@
         changeBuilder, DartAssistKind.CONVERT_INTO_IS_NOT_EMPTY);
   }
 
-  Future<Null> _addProposal_convertToNormalParameter() async {
+  Future<void> _addProposal_convertToNormalParameter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier &&
@@ -1208,13 +1208,13 @@
     }
   }
 
-  Future<Null> _addProposal_convertToSingleQuotedString() async {
+  Future<void> _addProposal_convertToSingleQuotedString() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     await _convertQuotes(true, DartAssistKind.CONVERT_TO_SINGLE_QUOTED_STRING);
   }
 
-  Future<Null> _addProposal_encapsulateField() async {
+  Future<void> _addProposal_encapsulateField() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // find FieldDeclaration
@@ -1315,7 +1315,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.ENCAPSULATE_FIELD);
   }
 
-  Future<Null> _addProposal_exchangeOperands() async {
+  Future<void> _addProposal_exchangeOperands() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // check that user invokes quick assist on binary expression
@@ -1372,7 +1372,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.EXCHANGE_OPERANDS);
   }
 
-  Future<Null> _addProposal_flutterConvertToChildren() async {
+  Future<void> _addProposal_flutterConvertToChildren() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // Find "child: widget" under selection.
@@ -1403,7 +1403,7 @@
         changeBuilder, DartAssistKind.FLUTTER_CONVERT_TO_CHILDREN);
   }
 
-  Future<Null> _addProposal_flutterConvertToStatefulWidget() async {
+  Future<void> _addProposal_flutterConvertToStatefulWidget() async {
     ClassDeclaration widgetClass =
         node.getAncestor((n) => n is ClassDeclaration);
     TypeName superclass = widgetClass?.extendsClause?.superclass;
@@ -1639,7 +1639,7 @@
         changeBuilder, DartAssistKind.FLUTTER_CONVERT_TO_STATEFUL_WIDGET);
   }
 
-  Future<Null> _addProposal_flutterMoveWidgetDown() async {
+  Future<void> _addProposal_flutterMoveWidgetDown() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var widget = flutter.identifyWidgetExpression(node);
@@ -1673,7 +1673,7 @@
     }
   }
 
-  Future<Null> _addProposal_flutterMoveWidgetUp() async {
+  Future<void> _addProposal_flutterMoveWidgetUp() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var widget = flutter.identifyWidgetExpression(node);
@@ -1706,7 +1706,7 @@
     }
   }
 
-  Future<Null> _addProposal_flutterRemoveWidget_multipleChildren() async {
+  Future<void> _addProposal_flutterRemoveWidget_multipleChildren() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var widgetCreation = flutter.identifyNewExpression(node);
@@ -1746,7 +1746,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.FLUTTER_REMOVE_WIDGET);
   }
 
-  Future<Null> _addProposal_flutterRemoveWidget_singleChild() async {
+  Future<void> _addProposal_flutterRemoveWidget_singleChild() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var widgetCreation = flutter.identifyNewExpression(node);
@@ -1773,7 +1773,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.FLUTTER_REMOVE_WIDGET);
   }
 
-  Future<Null> _addProposal_flutterSwapWithChild() async {
+  Future<void> _addProposal_flutterSwapWithChild() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     InstanceCreationExpression parent = flutter.identifyNewExpression(node);
@@ -1794,7 +1794,7 @@
         parent, child, DartAssistKind.FLUTTER_SWAP_WITH_CHILD);
   }
 
-  Future<Null> _addProposal_flutterSwapWithParent() async {
+  Future<void> _addProposal_flutterSwapWithParent() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     InstanceCreationExpression child = flutter.identifyNewExpression(node);
@@ -1815,7 +1815,7 @@
         parent, child, DartAssistKind.FLUTTER_SWAP_WITH_PARENT);
   }
 
-  Future<Null> _addProposal_flutterWrapWidget() async {
+  Future<void> _addProposal_flutterWrapWidget() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     await _addProposal_flutterWrapWidgetImpl();
@@ -1836,7 +1836,7 @@
         });
   }
 
-  Future<Null> _addProposal_flutterWrapWidgetImpl(
+  Future<void> _addProposal_flutterWrapWidgetImpl(
       {AssistKind kind: DartAssistKind.FLUTTER_WRAP_GENERIC,
       bool Function(Expression widgetExpr) widgetValidator,
       String parentLibraryUri,
@@ -1868,9 +1868,6 @@
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
     await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
       builder.addReplacement(range.node(widgetExpr), (DartEditBuilder builder) {
-        if (!driver.analysisOptions.previewDart2) {
-          builder.write('new ');
-        }
         if (parentClassElement == null) {
           builder.addSimpleLinkedEdit('WIDGET', 'widget');
         } else {
@@ -1906,7 +1903,7 @@
     _addAssistFromBuilder(changeBuilder, kind);
   }
 
-  Future<Null> _addProposal_flutterWrapWidgets() async {
+  Future<void> _addProposal_flutterWrapWidgets() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var selectionRange = new SourceRange(selectionOffset, selectionLength);
@@ -1936,7 +1933,7 @@
     var selectedRange = range.startEnd(firstWidget, lastWidget);
     String src = utils.getRangeText(selectedRange);
 
-    Future<Null> addAssist(
+    Future<void> addAssist(
         {@required AssistKind kind,
         @required String parentLibraryUri,
         @required String parentClassName}) async {
@@ -1953,9 +1950,6 @@
       DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
       await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
         builder.addReplacement(selectedRange, (DartEditBuilder builder) {
-          if (!driver.analysisOptions.previewDart2) {
-            builder.write('new ');
-          }
           builder.writeType(parentClassElement.type);
           builder.write('(');
 
@@ -1998,7 +1992,7 @@
         parentClassName: 'Row');
   }
 
-  Future<Null> _addProposal_importAddShow() async {
+  Future<void> _addProposal_importAddShow() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare ImportDirective
@@ -2043,7 +2037,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.IMPORT_ADD_SHOW);
   }
 
-  Future<Null> _addProposal_introduceLocalTestedType() async {
+  Future<void> _addProposal_introduceLocalTestedType() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -2116,7 +2110,7 @@
     }
   }
 
-  Future<Null> _addProposal_invertIf() async {
+  Future<void> _addProposal_invertIf() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! IfStatement) {
@@ -2144,7 +2138,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.INVERT_IF_STATEMENT);
   }
 
-  Future<Null> _addProposal_joinIfStatementInner() async {
+  Future<void> _addProposal_joinIfStatementInner() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // climb up condition to the (supposedly) "if" statement
@@ -2206,7 +2200,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.JOIN_IF_WITH_INNER);
   }
 
-  Future<Null> _addProposal_joinIfStatementOuter() async {
+  Future<void> _addProposal_joinIfStatementOuter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // climb up condition to the (supposedly) "if" statement
@@ -2272,7 +2266,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.JOIN_IF_WITH_OUTER);
   }
 
-  Future<Null> _addProposal_joinVariableDeclaration_onAssignment() async {
+  Future<void> _addProposal_joinVariableDeclaration_onAssignment() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // check that node is LHS in assignment
@@ -2349,7 +2343,7 @@
         changeBuilder, DartAssistKind.JOIN_VARIABLE_DECLARATION);
   }
 
-  Future<Null> _addProposal_joinVariableDeclaration_onDeclaration() async {
+  Future<void> _addProposal_joinVariableDeclaration_onDeclaration() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare enclosing VariableDeclarationList
@@ -2419,7 +2413,7 @@
         changeBuilder, DartAssistKind.JOIN_VARIABLE_DECLARATION);
   }
 
-  Future<Null> _addProposal_removeTypeAnnotation() async {
+  Future<void> _addProposal_removeTypeAnnotation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     VariableDeclarationList declarationList =
@@ -2465,7 +2459,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.REMOVE_TYPE_ANNOTATION);
   }
 
-  Future<Null> _addProposal_reparentFlutterList() async {
+  Future<void> _addProposal_reparentFlutterList() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! ListLiteral) {
@@ -2514,7 +2508,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.FLUTTER_WRAP_GENERIC);
   }
 
-  Future<Null> _addProposal_replaceConditionalWithIfElse() async {
+  Future<void> _addProposal_replaceConditionalWithIfElse() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     ConditionalExpression conditional = null;
@@ -2620,7 +2614,7 @@
     }
   }
 
-  Future<Null> _addProposal_replaceIfElseWithConditional() async {
+  Future<void> _addProposal_replaceIfElseWithConditional() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // should be "if"
@@ -2688,7 +2682,7 @@
     }
   }
 
-  Future<Null> _addProposal_splitAndCondition() async {
+  Future<void> _addProposal_splitAndCondition() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // check that user invokes quick assist on binary expression
@@ -2781,7 +2775,7 @@
     _addAssistFromBuilder(changeBuilder, DartAssistKind.SPLIT_AND_CONDITION);
   }
 
-  Future<Null> _addProposal_splitVariableDeclaration() async {
+  Future<void> _addProposal_splitVariableDeclaration() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare DartVariableStatement, should be part of Block
@@ -2821,7 +2815,7 @@
         changeBuilder, DartAssistKind.SPLIT_VARIABLE_DECLARATION);
   }
 
-  Future<Null> _addProposal_surroundWith() async {
+  Future<void> _addProposal_surroundWith() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare selected statements
@@ -3107,7 +3101,7 @@
     }
   }
 
-  Future<Null> _convertFunctionTypeAliasToGenericTypeAlias(
+  Future<void> _convertFunctionTypeAliasToGenericTypeAlias(
       FunctionTypeAlias node) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -3138,7 +3132,7 @@
         changeBuilder, DartAssistKind.CONVERT_INTO_GENERIC_FUNCTION_SYNTAX);
   }
 
-  Future<Null> _convertFunctionTypedFormalParameterToSimpleFormalParameter(
+  Future<void> _convertFunctionTypedFormalParameterToSimpleFormalParameter(
       FunctionTypedFormalParameter node) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -3167,7 +3161,7 @@
         changeBuilder, DartAssistKind.CONVERT_INTO_GENERIC_FUNCTION_SYNTAX);
   }
 
-  Future<Null> _convertQuotes(bool fromDouble, AssistKind kind) async {
+  Future<void> _convertQuotes(bool fromDouble, AssistKind kind) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleStringLiteral) {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 34e8c5f..0d9e95b 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -289,6 +289,11 @@
     node = new NodeLocator2(errorOffset).searchWithin(unit);
     coveredNode =
         new NodeLocator2(errorOffset, errorEnd - 1).searchWithin(unit);
+    if (coveredNode == null) {
+      // TODO(brianwilkerson) Figure out why the coveredNode is sometimes null.
+      return fixes;
+    }
+
     // analyze ErrorCode
     ErrorCode errorCode = error.errorCode;
     if (errorCode == StaticWarningCode.UNDEFINED_CLASS_BOOLEAN) {
@@ -326,6 +331,10 @@
     if (errorCode ==
         CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT) {
       await _addFix_createConstructorSuperImplicit();
+      // TODO(brianwilkerson) The following was added because fasta produces
+      // NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT in places where analyzer produced
+      // NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT
+      await _addFix_createConstructorSuperExplicit();
     }
     if (errorCode ==
         CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT) {
@@ -386,7 +395,10 @@
     if (errorCode == StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER) {
       await _addFix_makeEnclosingClassAbstract();
     }
-    if (errorCode == StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS ||
+    if (errorCode == CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS ||
+        errorCode == StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS ||
+        errorCode ==
+            CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED ||
         errorCode ==
             StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED) {
       await _addFix_createConstructor_insteadOfSyntheticDefault();
@@ -399,7 +411,8 @@
     if (errorCode == StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR) {
       await _addFix_createConstructor_named();
     }
-    if (errorCode ==
+    if (errorCode == StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER ||
+        errorCode ==
             StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE ||
         errorCode ==
             StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO ||
@@ -420,6 +433,7 @@
     }
     if (errorCode == CompileTimeErrorCode.UNDEFINED_CLASS ||
         errorCode == StaticWarningCode.CAST_TO_NON_TYPE ||
+        errorCode == StaticWarningCode.NOT_A_TYPE ||
         errorCode == StaticWarningCode.TYPE_TEST_WITH_UNDEFINED_NAME ||
         errorCode == StaticWarningCode.UNDEFINED_CLASS) {
       await _addFix_importLibrary_withType();
@@ -427,7 +441,9 @@
       await _addFix_undefinedClass_useSimilar();
     }
     if (errorCode ==
-        StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED) {
+            CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED ||
+        errorCode ==
+            StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED) {
       await _addFix_convertToNamedArgument();
     }
     if (errorCode == StaticWarningCode.FINAL_NOT_INITIALIZED) {
@@ -449,7 +465,8 @@
       await _addFix_importLibrary_withTopLevelVariable();
       await _addFix_createLocalVariable();
     }
-    if (errorCode == StaticWarningCode.UNDEFINED_NAMED_PARAMETER) {
+    if (errorCode == CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER ||
+        errorCode == StaticWarningCode.UNDEFINED_NAMED_PARAMETER) {
       await _addFix_addMissingNamedArgument();
     }
     if (errorCode == StaticTypeWarningCode.UNDEFINED_METHOD_WITH_CONSTRUCTOR) {
@@ -488,6 +505,12 @@
       await _addFix_createField();
       await _addFix_createGetter();
       await _addFix_createFunction_forFunctionType();
+      // TODO(brianwilkerson) The following were added because fasta produces
+      // UNDEFINED_GETTER in places where analyzer produced UNDEFINED_IDENTIFIER
+      await _addFix_createClass();
+      await _addFix_createLocalVariable();
+      await _addFix_importLibrary_withTopLevelVariable();
+      await _addFix_importLibrary_withType();
     }
     if (errorCode == HintCode.UNDEFINED_METHOD ||
         errorCode == StaticTypeWarningCode.UNDEFINED_METHOD) {
@@ -591,7 +614,7 @@
     return fixes;
   }
 
-  Future<Null> _addFix_addAsync() async {
+  Future<void> _addFix_addAsync() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     FunctionBody body = node.getAncestor((n) => n is FunctionBody);
@@ -605,7 +628,7 @@
     }
   }
 
-  Future<Null> _addFix_addExplicitCast() async {
+  Future<void> _addFix_addExplicitCast() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (coveredNode is! Expression) {
@@ -706,7 +729,7 @@
     }
   }
 
-  Future<Null> _addFix_addMissingNamedArgument() async {
+  Future<void> _addFix_addMissingNamedArgument() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // Prepare the name of the missing parameter.
@@ -770,7 +793,7 @@
     }
   }
 
-  Future<Null> _addFix_addMissingParameter() async {
+  Future<void> _addFix_addMissingParameter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // The error is reported on ArgumentList.
@@ -840,7 +863,7 @@
     }
   }
 
-  Future<Null> _addFix_addMissingRequiredArgument() async {
+  Future<void> _addFix_addMissingRequiredArgument() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     InstanceCreationExpression creation;
@@ -909,7 +932,7 @@
     }
   }
 
-  Future<Null> _addFix_addOverrideAnnotation() async {
+  Future<void> _addFix_addOverrideAnnotation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     ClassMember member = node.getAncestor((n) => n is ClassMember);
@@ -936,7 +959,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.LINT_ADD_OVERRIDE);
   }
 
-  Future<Null> _addFix_addRequiredAnnotation() async {
+  Future<void> _addFix_addRequiredAnnotation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -946,7 +969,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.LINT_ADD_REQUIRED);
   }
 
-  Future<Null> _addFix_addStatic() async {
+  Future<void> _addFix_addStatic() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     FieldDeclaration declaration =
@@ -958,7 +981,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.ADD_STATIC);
   }
 
-  Future<Null> _addFix_boolInsteadOfBoolean() async {
+  Future<void> _addFix_boolInsteadOfBoolean() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -968,7 +991,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_BOOLEAN_WITH_BOOL);
   }
 
-  Future<Null> _addFix_canBeNullAfterNullAware() async {
+  Future<void> _addFix_canBeNullAfterNullAware() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = coveredNode;
@@ -992,7 +1015,7 @@
     }
   }
 
-  Future<Null> _addFix_changeTypeAnnotation() async {
+  Future<void> _addFix_changeTypeAnnotation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode declaration = coveredNode.parent;
@@ -1025,7 +1048,7 @@
     }
   }
 
-  Future<Null> _addFix_convertFlutterChild() async {
+  Future<void> _addFix_convertFlutterChild() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     NamedExpression named = flutter.findNamedExpression(node, 'child');
@@ -1067,7 +1090,7 @@
     }
   }
 
-  Future<Null> _addFix_convertFlutterChildren() async {
+  Future<void> _addFix_convertFlutterChildren() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -1097,7 +1120,7 @@
     }
   }
 
-  Future<Null> _addFix_convertToNamedArgument() async {
+  Future<void> _addFix_convertToNamedArgument() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     var argumentList = this.node;
@@ -1167,7 +1190,7 @@
     }
   }
 
-  Future<Null> _addFix_createClass() async {
+  Future<void> _addFix_createClass() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     Element prefixElement = null;
@@ -1252,7 +1275,7 @@
    * Here we handle cases when there are no constructors in a class, and the
    * class has uninitialized final fields.
    */
-  Future<Null> _addFix_createConstructor_forUninitializedFinalFields() async {
+  Future<void> _addFix_createConstructor_forUninitializedFinalFields() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! SimpleIdentifier || node.parent is! VariableDeclaration) {
@@ -1330,7 +1353,7 @@
         changeBuilder, DartFixKind.CREATE_CONSTRUCTOR_FOR_FINAL_FIELDS);
   }
 
-  Future<Null> _addFix_createConstructor_insteadOfSyntheticDefault() async {
+  Future<void> _addFix_createConstructor_insteadOfSyntheticDefault() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! ArgumentList) {
@@ -1375,7 +1398,7 @@
         args: [constructorName]);
   }
 
-  Future<Null> _addFix_createConstructor_named() async {
+  Future<void> _addFix_createConstructor_named() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     SimpleIdentifier name = null;
@@ -1435,7 +1458,7 @@
         args: [constructorName]);
   }
 
-  Future<Null> _addFix_createConstructorSuperExplicit() async {
+  Future<void> _addFix_createConstructorSuperExplicit() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node.parent is! ConstructorDeclaration ||
@@ -1506,10 +1529,11 @@
     }
   }
 
-  Future<Null> _addFix_createConstructorSuperImplicit() async {
+  Future<void> _addFix_createConstructorSuperImplicit() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
-    ClassDeclaration targetClassNode = node.parent as ClassDeclaration;
+    ClassDeclaration targetClassNode =
+        node.getAncestor((parent) => parent is ClassDeclaration);
     ClassElement targetClassElement = targetClassNode.declaredElement;
     InterfaceType superType = targetClassElement.supertype;
     String targetClassName = targetClassElement.name;
@@ -1575,7 +1599,7 @@
     }
   }
 
-  Future<Null> _addFix_createField() async {
+  Future<void> _addFix_createField() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! SimpleIdentifier) {
@@ -1652,7 +1676,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.CREATE_FIELD, args: [name]);
   }
 
-  Future<Null> _addFix_createField_initializingFormal() async {
+  Future<void> _addFix_createField_initializingFormal() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     //
@@ -1688,7 +1712,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.CREATE_FIELD, args: [name]);
   }
 
-  Future<Null> _addFix_createFunction_forFunctionType() async {
+  Future<void> _addFix_createFunction_forFunctionType() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier) {
@@ -1738,7 +1762,7 @@
     }
   }
 
-  Future<Null> _addFix_createGetter() async {
+  Future<void> _addFix_createGetter() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! SimpleIdentifier) {
@@ -1815,7 +1839,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.CREATE_GETTER, args: [name]);
   }
 
-  Future<Null> _addFix_createImportUri() async {
+  Future<void> _addFix_createImportUri() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // TODO(brianwilkerson) Generalize this to allow other valid string literals.
@@ -1843,7 +1867,7 @@
     }
   }
 
-  Future<Null> _addFix_createLocalVariable() async {
+  Future<void> _addFix_createLocalVariable() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! SimpleIdentifier) {
@@ -1896,7 +1920,7 @@
         args: [name]);
   }
 
-  Future<Null> _addFix_createMissingOverrides() async {
+  Future<void> _addFix_createMissingOverrides() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node.parent is! ClassDeclaration) {
@@ -2045,7 +2069,7 @@
     utils.targetExecutableElement = null;
   }
 
-  Future<Null> _addFix_createNoSuchMethod() async {
+  Future<void> _addFix_createNoSuchMethod() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node.parent is! ClassDeclaration) {
@@ -2073,7 +2097,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.CREATE_NO_SUCH_METHOD);
   }
 
-  Future<Null> _addFix_createPartUri() async {
+  Future<void> _addFix_createPartUri() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // TODO(brianwilkerson) Generalize this to allow other valid string literals.
@@ -2094,7 +2118,7 @@
     }
   }
 
-  Future<Null> _addFix_illegalAsyncReturnType() async {
+  Future<void> _addFix_illegalAsyncReturnType() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare the existing type
@@ -2107,7 +2131,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_RETURN_TYPE_FUTURE);
   }
 
-  Future<Null> _addFix_importLibrary(FixKind kind, Uri library) async {
+  Future<void> _addFix_importLibrary(FixKind kind, Uri library) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     String uriText;
@@ -2118,7 +2142,7 @@
     _addFixFromBuilder(changeBuilder, kind, args: [uriText]);
   }
 
-  Future<Null> _addFix_importLibrary_withElement(String name,
+  Future<void> _addFix_importLibrary_withElement(String name,
       List<ElementKind> elementKinds, TopLevelDeclarationKind kind2) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -2222,7 +2246,7 @@
     }
   }
 
-  Future<Null> _addFix_importLibrary_withFunction() async {
+  Future<void> _addFix_importLibrary_withFunction() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier && node.parent is MethodInvocation) {
@@ -2235,7 +2259,7 @@
     }
   }
 
-  Future<Null> _addFix_importLibrary_withTopLevelVariable() async {
+  Future<void> _addFix_importLibrary_withTopLevelVariable() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier) {
@@ -2247,7 +2271,7 @@
     }
   }
 
-  Future<Null> _addFix_importLibrary_withType() async {
+  Future<void> _addFix_importLibrary_withType() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (_mayBeTypeIdentifier(node)) {
@@ -2263,7 +2287,7 @@
     }
   }
 
-  Future<Null> _addFix_insertSemicolon() async {
+  Future<void> _addFix_insertSemicolon() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (error.message.contains("';'")) {
@@ -2279,7 +2303,7 @@
     }
   }
 
-  Future<Null> _addFix_isNotEmpty() async {
+  Future<void> _addFix_isNotEmpty() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! PrefixExpression) {
@@ -2307,7 +2331,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.USE_IS_NOT_EMPTY);
   }
 
-  Future<Null> _addFix_isNotNull() async {
+  Future<void> _addFix_isNotNull() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (coveredNode is IsExpression) {
@@ -2324,7 +2348,7 @@
     }
   }
 
-  Future<Null> _addFix_isNull() async {
+  Future<void> _addFix_isNull() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (coveredNode is IsExpression) {
@@ -2341,7 +2365,7 @@
     }
   }
 
-  Future<Null> _addFix_makeEnclosingClassAbstract() async {
+  Future<void> _addFix_makeEnclosingClassAbstract() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     ClassDeclaration enclosingClass =
@@ -2359,7 +2383,7 @@
         args: [className]);
   }
 
-  Future<Null> _addFix_makeFieldNotFinal() async {
+  Future<void> _addFix_makeFieldNotFinal() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -2404,7 +2428,7 @@
     }
   }
 
-  Future<Null> _addFix_makeVariableFinal() async {
+  Future<void> _addFix_makeVariableFinal() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -2425,7 +2449,7 @@
     }
   }
 
-  Future<Null> _addFix_nonBoolCondition_addNotNull() async {
+  Future<void> _addFix_nonBoolCondition_addNotNull() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -2435,7 +2459,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.ADD_NE_NULL);
   }
 
-  Future<Null> _addFix_removeAwait() async {
+  Future<void> _addFix_removeAwait() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     final awaitExpression = node;
@@ -2449,7 +2473,7 @@
     }
   }
 
-  Future<Null> _addFix_removeDeadCode() async {
+  Future<void> _addFix_removeDeadCode() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode coveringNode = this.coveredNode;
@@ -2492,7 +2516,7 @@
     }
   }
 
-  Future<Null> _addFix_removeEmptyCatch() async {
+  Future<void> _addFix_removeEmptyCatch() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -2502,7 +2526,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_EMPTY_CATCH);
   }
 
-  Future<Null> _addFix_removeEmptyConstructorBody() async {
+  Future<void> _addFix_removeEmptyConstructorBody() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -2514,7 +2538,7 @@
         changeBuilder, DartFixKind.REMOVE_EMPTY_CONSTRUCTOR_BODY);
   }
 
-  Future<Null> _addFix_removeEmptyElse() async {
+  Future<void> _addFix_removeEmptyElse() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     IfStatement ifStatement = node.parent;
@@ -2526,7 +2550,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_EMPTY_ELSE);
   }
 
-  Future<Null> _addFix_removeEmptyStatement() async {
+  Future<void> _addFix_removeEmptyStatement() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     EmptyStatement emptyStatement = node;
@@ -2549,7 +2573,7 @@
     }
   }
 
-  Future<Null> _addFix_removeInitializer() async {
+  Future<void> _addFix_removeInitializer() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // Retrieve the linted node.
@@ -2565,7 +2589,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_INITIALIZER);
   }
 
-  Future<Null> _addFix_removeInterpolationBraces() async {
+  Future<void> _addFix_removeInterpolationBraces() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -2584,7 +2608,7 @@
     }
   }
 
-  Future<Null> _addFix_removeMethodDeclaration() async {
+  Future<void> _addFix_removeMethodDeclaration() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     MethodDeclaration declaration =
@@ -2598,10 +2622,11 @@
     }
   }
 
-  Future<Null> _addFix_removeParameters_inGetterDeclaration() async {
+  Future<void> _addFix_removeParameters_inGetterDeclaration() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is MethodDeclaration) {
+      // Support for the analyzer error.
       MethodDeclaration method = node as MethodDeclaration;
       SimpleIdentifier name = method.name;
       FunctionBody body = method.body;
@@ -2613,10 +2638,18 @@
         _addFixFromBuilder(
             changeBuilder, DartFixKind.REMOVE_PARAMETERS_IN_GETTER_DECLARATION);
       }
+    } else if (node is FormalParameterList) {
+      // Support for the fasta error.
+      DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
+      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
+        builder.addDeletion(range.node(node));
+      });
+      _addFixFromBuilder(
+          changeBuilder, DartFixKind.REMOVE_PARAMETERS_IN_GETTER_DECLARATION);
     }
   }
 
-  Future<Null> _addFix_removeParentheses_inGetterInvocation() async {
+  Future<void> _addFix_removeParentheses_inGetterInvocation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier && node.parent is MethodInvocation) {
@@ -2632,7 +2665,7 @@
     }
   }
 
-  Future<Null> _addFix_removeThisExpression() async {
+  Future<void> _addFix_removeThisExpression() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     final thisExpression = node is ThisExpression
@@ -2654,7 +2687,7 @@
     }
   }
 
-  Future<Null> _addFix_removeTypeAnnotation() async {
+  Future<void> _addFix_removeTypeAnnotation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     final TypeAnnotation type =
@@ -2668,7 +2701,7 @@
     }
   }
 
-  Future<Null> _addFix_removeUnnecessaryCast() async {
+  Future<void> _addFix_removeUnnecessaryCast() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (coveredNode is! AsExpression) {
@@ -2686,7 +2719,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_UNNECESSARY_CAST);
   }
 
-  Future<Null> _addFix_removeUnusedCatchClause() async {
+  Future<void> _addFix_removeUnusedCatchClause() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier) {
@@ -2704,7 +2737,7 @@
     }
   }
 
-  Future<Null> _addFix_removeUnusedCatchStack() async {
+  Future<void> _addFix_removeUnusedCatchStack() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier) {
@@ -2723,7 +2756,7 @@
     }
   }
 
-  Future<Null> _addFix_removeUnusedImport() async {
+  Future<void> _addFix_removeUnusedImport() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare ImportDirective
@@ -2740,7 +2773,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_UNUSED_IMPORT);
   }
 
-  Future<Null> _addFix_renameToCamelCase() async {
+  Future<void> _addFix_renameToCamelCase() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! SimpleIdentifier) {
@@ -2783,7 +2816,7 @@
         args: [newName]);
   }
 
-  Future<Null> _addFix_replaceFinalWithConst() async {
+  Future<void> _addFix_replaceFinalWithConst() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is VariableDeclarationList) {
@@ -2796,7 +2829,7 @@
     }
   }
 
-  Future<Null> _addFix_replaceVarWithDynamic() async {
+  Future<void> _addFix_replaceVarWithDynamic() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -2806,7 +2839,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_VAR_WITH_DYNAMIC);
   }
 
-  Future<Null> _addFix_replaceWithConditionalAssignment() async {
+  Future<void> _addFix_replaceWithConditionalAssignment() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     IfStatement ifStatement = node is IfStatement
@@ -2843,7 +2876,7 @@
     }
   }
 
-  Future<Null> _addFix_replaceWithConstInstanceCreation() async {
+  Future<void> _addFix_replaceWithConstInstanceCreation() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (coveredNode is InstanceCreationExpression) {
@@ -2862,7 +2895,7 @@
     }
   }
 
-  Future<Null> _addFix_replaceWithIdentifier() async {
+  Future<void> _addFix_replaceWithIdentifier() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     final FunctionTypedFormalParameter functionTyped =
@@ -2879,7 +2912,7 @@
     }
   }
 
-  Future<Null> _addFix_replaceWithLiteral() async {
+  Future<void> _addFix_replaceWithLiteral() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     final InstanceCreationExpression instanceCreation =
@@ -2903,7 +2936,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.REPLACE_WITH_LITERAL);
   }
 
-  Future<Null> _addFix_replaceWithTearOff() async {
+  Future<void> _addFix_replaceWithTearOff() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     FunctionExpression ancestor =
@@ -2911,7 +2944,7 @@
     if (ancestor == null) {
       return;
     }
-    Future<Null> addFixOfExpression(InvocationExpression expression) async {
+    Future<void> addFixOfExpression(InvocationExpression expression) async {
       // TODO(brianwilkerson) Determine whether this await is necessary.
       await null;
       DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
@@ -2943,7 +2976,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedClass_useSimilar() async {
+  Future<void> _addFix_undefinedClass_useSimilar() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -2994,7 +3027,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedClassAccessor_useSimilar() async {
+  Future<void> _addFix_undefinedClassAccessor_useSimilar() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -3024,7 +3057,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedClassMember_useSimilar(
+  Future<void> _addFix_undefinedClassMember_useSimilar(
       Expression target, ElementPredicate predicate) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -3060,7 +3093,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedFunction_create() async {
+  Future<void> _addFix_undefinedFunction_create() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // should be the name of the invocation
@@ -3109,7 +3142,7 @@
         args: [name]);
   }
 
-  Future<Null> _addFix_undefinedFunction_useSimilar() async {
+  Future<void> _addFix_undefinedFunction_useSimilar() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     AstNode node = this.node;
@@ -3157,7 +3190,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedMethod_create() async {
+  Future<void> _addFix_undefinedMethod_create() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier && node.parent is MethodInvocation) {
@@ -3173,6 +3206,11 @@
         targetElement = unitElement;
         ClassMember enclosingMember =
             node.getAncestor((node) => node is ClassMember);
+        if (enclosingMember == null) {
+          // If the undefined identifier isn't inside a class member, then it
+          // doesn't make sense to create a method.
+          return;
+        }
         targetClassNode = enclosingMember.parent;
         utils.targetClassElement = targetClassNode.declaredElement;
         staticModifier = _inStaticContext();
@@ -3243,7 +3281,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedMethod_useSimilar() async {
+  Future<void> _addFix_undefinedMethod_useSimilar() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node.parent is MethodInvocation) {
@@ -3253,7 +3291,7 @@
     }
   }
 
-  Future<Null> _addFix_undefinedMethodWithContructor() async {
+  Future<void> _addFix_undefinedMethodWithContructor() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier && node.parent is MethodInvocation) {
@@ -3273,7 +3311,7 @@
    * Here we handle cases when a constructors does not initialize all of the
    * final fields.
    */
-  Future<Null> _addFix_updateConstructor_forUninitializedFinalFields() async {
+  Future<void> _addFix_updateConstructor_forUninitializedFinalFields() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is! SimpleIdentifier || node.parent is! ConstructorDeclaration) {
@@ -3335,7 +3373,7 @@
     _addFixFromBuilder(changeBuilder, DartFixKind.ADD_FIELD_FORMAL_PARAMETERS);
   }
 
-  Future<Null> _addFix_useEffectiveIntegerDivision() async {
+  Future<void> _addFix_useEffectiveIntegerDivision() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     for (AstNode n = node; n != null; n = n.parent) {
@@ -3364,7 +3402,7 @@
    * Adds a fix that replaces [target] with a reference to the class declaring
    * the given [element].
    */
-  Future<Null> _addFix_useStaticAccess(AstNode target, Element element) async {
+  Future<void> _addFix_useStaticAccess(AstNode target, Element element) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     Element declaringElement = element.enclosingElement;
@@ -3382,7 +3420,7 @@
     }
   }
 
-  Future<Null> _addFix_useStaticAccess_method() async {
+  Future<void> _addFix_useStaticAccess_method() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier && node.parent is MethodInvocation) {
@@ -3395,7 +3433,7 @@
     }
   }
 
-  Future<Null> _addFix_useStaticAccess_property() async {
+  Future<void> _addFix_useStaticAccess_property() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (node is SimpleIdentifier && node.parent is PrefixedIdentifier) {
@@ -3494,7 +3532,7 @@
    * Adds proposal for creating method corresponding to the given [FunctionType] in the given
    * [ClassElement].
    */
-  Future<Null> _addProposal_createFunction_function(
+  Future<void> _addProposal_createFunction_function(
       FunctionType functionType) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -3523,7 +3561,7 @@
    * Adds proposal for creating method corresponding to the given [FunctionType] in the given
    * [ClassElement].
    */
-  Future<Null> _addProposal_createFunction_method(
+  Future<void> _addProposal_createFunction_method(
       ClassElement targetClassElement, FunctionType functionType) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart b/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart
index 598057e..b24a839 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/convert_getter_to_method.dart
@@ -88,7 +88,7 @@
     return new RefactoringStatus();
   }
 
-  Future<Null> _updateElementDeclaration(
+  Future<void> _updateElementDeclaration(
       PropertyAccessorElement element) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart b/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
index a6a2c7b..068f5a7 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/convert_method_to_getter.dart
@@ -97,7 +97,7 @@
   @override
   bool requiresPreview() => false;
 
-  Future<Null> _updateElementDeclaration(Element element) async {
+  Future<void> _updateElementDeclaration(Element element) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // prepare parameters
@@ -125,7 +125,7 @@
     }
   }
 
-  Future<Null> _updateElementReferences(Element element) async {
+  Future<void> _updateElementReferences(Element element) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     List<SearchMatch> matches = await searchEngine.searchReferences(element);
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
index 2b3e43a..2d260ed 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
@@ -782,7 +782,7 @@
     return result;
   }
 
-  Future<Null> _initializeReturnType() async {
+  Future<void> _initializeReturnType() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     TypeProvider typeProvider = await session.typeProvider;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
index 7a28fc7..a57352f 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
@@ -464,7 +464,7 @@
 
   _ReferenceProcessor(this.ref, this.reference);
 
-  Future<Null> init() async {
+  Future<void> init() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     refElement = reference.element;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
index 847b333..cf80af9 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
@@ -342,7 +342,7 @@
   }
 }
 
-class _LocalElementsCollector extends GeneralizingAstVisitor<Null> {
+class _LocalElementsCollector extends GeneralizingAstVisitor<void> {
   final String name;
   final List<LocalElement> elements = [];
 
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart
index 661eea2..ff84856 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_constructor.dart
@@ -113,7 +113,7 @@
         sourceRange));
   }
 
-  Future<Null> _replaceSynthetic() async {
+  Future<void> _replaceSynthetic() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     ClassElement classElement = element.enclosingElement;
diff --git a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
index a0d3130..f16268b 100644
--- a/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
+++ b/pkg/analysis_server/lib/src/services/search/search_engine_internal.dart
@@ -29,7 +29,7 @@
     Set<String> visitedIds = new Set<String>();
     Set<String> members = new Set<String>();
 
-    Future<Null> addMembers(ClassElement type, SubtypeResult subtype) async {
+    Future<void> addMembers(ClassElement type, SubtypeResult subtype) async {
       // TODO(brianwilkerson) Determine whether this await is necessary.
       await null;
       if (subtype != null && !visitedIds.add(subtype.id)) {
@@ -62,7 +62,7 @@
     await null;
     Set<ClassElement> allSubtypes = new Set<ClassElement>();
 
-    Future<Null> addSubtypes(ClassElement type) async {
+    Future<void> addSubtypes(ClassElement type) async {
       // TODO(brianwilkerson) Determine whether this await is necessary.
       await null;
       List<SearchResult> directResults = await _searchDirectSubtypes(type);
diff --git a/pkg/analysis_server/lib/src/status/diagnostics.dart b/pkg/analysis_server/lib/src/status/diagnostics.dart
index 9f9f312..b4fc191 100644
--- a/pkg/analysis_server/lib/src/status/diagnostics.dart
+++ b/pkg/analysis_server/lib/src/status/diagnostics.dart
@@ -171,7 +171,7 @@
   bool get showInNav => false;
 
   @override
-  Future<Null> generateContent(Map<String, String> params) async {
+  Future<void> generateContent(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     String path = params['file'];
@@ -199,7 +199,7 @@
   }
 
   @override
-  Future<Null> generatePage(Map<String, String> params) async {
+  Future<void> generatePage(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
@@ -584,7 +584,7 @@
   AnalysisServer get server =>
       (site as DiagnosticsSite).socketServer.analysisServer;
 
-  Future<Null> generateContainer(Map<String, String> params) async {
+  Future<void> generateContainer(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     buf.writeln('<div class="columns docs-layout">');
@@ -600,7 +600,7 @@
     buf.writeln('</div>');
   }
 
-  Future generateContent(Map<String, String> params);
+  Future<void> generateContent(Map<String, String> params);
 
   void generateFooter() {
     buf.writeln('''
@@ -630,7 +630,7 @@
 ''');
   }
 
-  Future<Null> generatePage(Map<String, String> params) async {
+  Future<void> generatePage(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     buf.writeln('<!DOCTYPE html><html lang="en">');
@@ -670,7 +670,7 @@
 
   bool get showInNav => true;
 
-  Future<Null> generateContainer(Map<String, String> params) async {
+  Future<void> generateContainer(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     buf.writeln('<div class="columns docs-layout">');
@@ -768,7 +768,7 @@
   bool get showInNav => false;
 
   @override
-  Future<Null> generateContent(Map<String, String> params) async {
+  Future<void> generateContent(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     String path = params['file'];
@@ -796,7 +796,7 @@
   }
 
   @override
-  Future<Null> generatePage(Map<String, String> params) async {
+  Future<void> generatePage(Map<String, String> params) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
@@ -1282,8 +1282,6 @@
   }
 
   static Future<ServiceProtocol> connect(Uri uri) async {
-    // TODO(brianwilkerson) Determine whether this await is necessary.
-    await null;
     WebSocket socket = await WebSocket.connect(uri.toString());
     return new ServiceProtocol._(socket);
   }
@@ -1305,8 +1303,6 @@
 
     buf.writeln('<div class="column one-half">');
     h3('Status');
-    buf.writeln(writeOption('Preview-dart-2',
-        diagnosticsSite.socketServer.analysisServerOptions.previewDart2));
     buf.writeln(writeOption('Use fasta parser',
         diagnosticsSite.socketServer.analysisServerOptions.useFastaParser));
     buf.writeln(writeOption('Use common front end',
diff --git a/pkg/analysis_server/lib/src/status/pages.dart b/pkg/analysis_server/lib/src/status/pages.dart
index e727bf5..b270a3c 100644
--- a/pkg/analysis_server/lib/src/status/pages.dart
+++ b/pkg/analysis_server/lib/src/status/pages.dart
@@ -30,7 +30,7 @@
 
   String get path => '/$id';
 
-  Future<Null> asyncDiv(void gen(), {String classes}) async {
+  Future<void> asyncDiv(void gen(), {String classes}) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (classes != null) {
@@ -68,7 +68,7 @@
     return buf.toString();
   }
 
-  void generatePage(Map<String, String> params);
+  Future<void> generatePage(Map<String, String> params);
 
   void h1(String text, {String classes}) {
     if (classes != null) {
@@ -146,7 +146,7 @@
 
   Page createUnknownPage(String unknownPath);
 
-  Future<Null> handleGetRequest(HttpRequest request) async {
+  Future<void> handleGetRequest(HttpRequest request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
@@ -182,7 +182,7 @@
     }
   }
 
-  Future<Null> respond(HttpRequest request, Page page,
+  Future<void> respond(HttpRequest request, Page page,
       [int code = HttpStatus.ok]) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
diff --git a/pkg/analysis_server/test/abstract_context.dart b/pkg/analysis_server/test/abstract_context.dart
index b96340e..9f91783 100644
--- a/pkg/analysis_server/test/abstract_context.dart
+++ b/pkg/analysis_server/test/abstract_context.dart
@@ -58,8 +58,6 @@
 
   AnalysisDriver get driver => _driver;
 
-  bool get previewDart2 => driver.analysisOptions.previewDart2;
-
   /**
    * Return `true` to enable the Dart 2.0 Common Front End.
    */
diff --git a/pkg/analysis_server/test/abstract_single_unit.dart b/pkg/analysis_server/test/abstract_single_unit.dart
index c61e9d7..78e2280 100644
--- a/pkg/analysis_server/test/abstract_single_unit.dart
+++ b/pkg/analysis_server/test/abstract_single_unit.dart
@@ -110,7 +110,7 @@
     return length;
   }
 
-  Future<Null> resolveTestUnit(String code) async {
+  Future<void> resolveTestUnit(String code) async {
     addTestSource(code);
     testAnalysisResult = await driver.getResult(convertPath(testFile));
     testUnit = testAnalysisResult.unit;
@@ -136,7 +136,7 @@
   }
 }
 
-class _ElementsByNameFinder extends RecursiveAstVisitor<Null> {
+class _ElementsByNameFinder extends RecursiveAstVisitor<void> {
   final String name;
   final List<Element> elements = [];
 
diff --git a/pkg/analysis_server/test/analysis/get_errors_test.dart b/pkg/analysis_server/test/analysis/get_errors_test.dart
index 3a522d6..a99cf1c 100644
--- a/pkg/analysis_server/test/analysis/get_errors_test.dart
+++ b/pkg/analysis_server/test/analysis/get_errors_test.dart
@@ -162,10 +162,6 @@
   @override
   test_fileDoesNotExist() => super.test_fileDoesNotExist();
 
-  @failingTest
-  @override
-  test_hasErrors() => super.test_hasErrors();
-
   @override
   test_removeContextAfterRequest() => super.test_removeContextAfterRequest();
 }
diff --git a/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart b/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart
index 4132c93..7227629 100644
--- a/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart
@@ -35,7 +35,7 @@
     expect(analyzedFiles, isNot(contains(filePath)));
   }
 
-  Future<Null> prepareAnalyzedFiles() async {
+  Future<void> prepareAnalyzedFiles() async {
     addGeneralAnalysisSubscription(GeneralAnalysisService.ANALYZED_FILES);
     await pumpEventQueue(times: 5000);
   }
diff --git a/pkg/analysis_server/test/analysis_abstract.dart b/pkg/analysis_server/test/analysis_abstract.dart
index c237034..4ab0fdd 100644
--- a/pkg/analysis_server/test/analysis_abstract.dart
+++ b/pkg/analysis_server/test/analysis_abstract.dart
@@ -122,7 +122,6 @@
     // Create server
     //
     AnalysisServerOptions options = new AnalysisServerOptions()
-      ..previewDart2 = true
       ..useCFE = useCFE;
     return new AnalysisServer(
         serverChannel,
@@ -283,7 +282,7 @@
   }
 
   @override
-  Future<Null> addPluginToContextRoot(
+  Future<void> addPluginToContextRoot(
       analyzer.ContextRoot contextRoot, String path) async {
     fail('Unexpected invocation of addPluginToContextRoot');
   }
@@ -323,7 +322,7 @@
   }
 
   @override
-  Future<Null> restartPlugins() async {
+  Future<void> restartPlugins() async {
     // Nothing to restart.
     return null;
   }
@@ -347,7 +346,7 @@
   }
 
   @override
-  Future<List<Null>> stopAll() async {
+  Future<List<void>> stopAll() async {
     fail('Unexpected invocation of stopAll');
   }
 }
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index e739770..93b60d0 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -1906,7 +1906,6 @@
 
     // Verify options were set.
     expect(analysisOptions.enableSuperMixins, isTrue);
-    expect(analysisOptions.previewDart2, isTrue);
     expect(errorProcessors, hasLength(2));
     expect(lints, hasLength(2));
 
diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart
index 506e61b..a4b7902 100644
--- a/pkg/analysis_server/test/domain_analysis_test.dart
+++ b/pkg/analysis_server/test/domain_analysis_test.dart
@@ -378,7 +378,7 @@
     server = new AnalysisServer(
         serverChannel,
         resourceProvider,
-        new AnalysisServerOptions()..previewDart2 = true,
+        new AnalysisServerOptions(),
         new DartSdkManager(convertPath('/'), false),
         InstrumentationService.NULL_SERVICE);
     handler = new AnalysisDomainHandler(server);
diff --git a/pkg/analysis_server/test/domain_completion_util.dart b/pkg/analysis_server/test/domain_completion_util.dart
index 996b070..7d0721b 100644
--- a/pkg/analysis_server/test/domain_completion_util.dart
+++ b/pkg/analysis_server/test/domain_completion_util.dart
@@ -20,7 +20,7 @@
   int completionOffset;
   int replacementOffset;
   int replacementLength;
-  Map<String, Completer<Null>> receivedSuggestionsCompleters = {};
+  Map<String, Completer<void>> receivedSuggestionsCompleters = {};
   List<CompletionSuggestion> suggestions = [];
   bool suggestionsDone = false;
   Map<String, List<CompletionSuggestion>> allSuggestions = {};
@@ -128,8 +128,8 @@
     handler = new CompletionDomainHandler(server);
   }
 
-  Completer<Null> _getResultsCompleter(String id) {
+  Completer<void> _getResultsCompleter(String id) {
     return receivedSuggestionsCompleters.putIfAbsent(
-        id, () => new Completer<Null>());
+        id, () => new Completer<void>());
   }
 }
diff --git a/pkg/analysis_server/test/edit/fixes_test.dart b/pkg/analysis_server/test/edit/fixes_test.dart
index 8548b38..971400e 100644
--- a/pkg/analysis_server/test/edit/fixes_test.dart
+++ b/pkg/analysis_server/test/edit/fixes_test.dart
@@ -175,8 +175,4 @@
 class FixesTest_UseCFE extends FixesTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_fixUndefinedClass() => super.test_fixUndefinedClass();
 }
diff --git a/pkg/analysis_server/test/edit/refactoring_test.dart b/pkg/analysis_server/test/edit/refactoring_test.dart
index 9e8555e..7a60834 100644
--- a/pkg/analysis_server/test/edit/refactoring_test.dart
+++ b/pkg/analysis_server/test/edit/refactoring_test.dart
@@ -150,14 +150,6 @@
     extends ConvertGetterMethodToMethodTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_function() => super.test_function();
-
-  @failingTest
-  @override
-  test_method() => super.test_method();
 }
 
 @reflectiveTest
@@ -276,14 +268,6 @@
 class ConvertMethodToGetterTest_UseCFE extends ConvertMethodToGetterTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_function() => super.test_function();
-
-  @failingTest
-  @override
-  test_method() => super.test_method();
 }
 
 @reflectiveTest
@@ -453,7 +437,7 @@
 }
 ''');
 
-    Future<Null> checkUpdate(doUpdate()) async {
+    Future<void> checkUpdate(doUpdate()) async {
       await getRefactoringResult(() {
         return sendStringRequest('1 + 2', 'res', true);
       });
@@ -604,11 +588,6 @@
 class ExtractLocalVariableTest_UseCFE extends ExtractLocalVariableTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_resetOnAnalysisSetChanged_overlay() =>
-      super.test_resetOnAnalysisSetChanged_overlay();
 }
 
 @reflectiveTest
@@ -1201,22 +1180,6 @@
 class InlineLocalTest_UseCFE extends InlineLocalTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_analysis_onlyOneFile() => super.test_analysis_onlyOneFile();
-
-  @failingTest
-  @override
-  test_feedback() => super.test_feedback();
-
-  @failingTest
-  @override
-  test_OK() => super.test_OK();
-
-  @failingTest
-  @override
-  test_resetOnAnalysisSetChanged() => super.test_resetOnAnalysisSetChanged();
 }
 
 @reflectiveTest
@@ -1349,23 +1312,6 @@
 class InlineMethodTest_UseCFE extends InlineMethodTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_feedback() => super.test_feedback();
-
-  @failingTest
-  @override
-  test_method() => super.test_method();
-
-  @failingTest
-  @override
-  test_topLevelFunction() => super.test_topLevelFunction();
-
-  @failingTest
-  @override
-  test_topLevelFunction_oneInvocation() =>
-      super.test_topLevelFunction_oneInvocation();
 }
 
 @reflectiveTest
diff --git a/pkg/analysis_server/test/edit/sort_members_test.dart b/pkg/analysis_server/test/edit/sort_members_test.dart
index 55727eb..c1915b3 100644
--- a/pkg/analysis_server/test/edit/sort_members_test.dart
+++ b/pkg/analysis_server/test/edit/sort_members_test.dart
@@ -260,9 +260,4 @@
 class SortMembersTest_UseCFE extends SortMembersTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_OK_directives_withAnnotation() =>
-      super.test_OK_directives_withAnnotation();
 }
diff --git a/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart b/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart
index 655fa65..3e2fad7 100644
--- a/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart
+++ b/pkg/analysis_server/test/integration/analysis/get_imported_elements_test.dart
@@ -85,7 +85,7 @@
    * Check that an analysis.getImportedElements request on the region matching
    * [target] produces an empty list of elements.
    */
-  Future<Null> checkNoElements(String target) async {
+  Future<void> checkNoElements(String target) async {
     int offset = text.indexOf(target);
     AnalysisGetImportedElementsResult result =
         await sendAnalysisGetImportedElements(pathname, offset, target.length);
diff --git a/pkg/analysis_server/test/integration/edit/get_fixes_test.dart b/pkg/analysis_server/test/integration/edit/get_fixes_test.dart
index f68d12e..4d916df 100644
--- a/pkg/analysis_server/test/integration/edit/get_fixes_test.dart
+++ b/pkg/analysis_server/test/integration/edit/get_fixes_test.dart
@@ -31,11 +31,20 @@
 
     EditGetFixesResult result =
         await sendEditGetFixes(pathname, text.indexOf('Future f'));
-    expect(result.fixes, hasLength(1));
+
+    AnalysisErrorFixes fix;
+    if (useCFE) {
+      // TODO(scheglov) We have to filter errors, because two are reported.
+      // https://github.com/dart-lang/sdk/issues/34124
+      fix = result.fixes
+          .singleWhere((fix) => fix.error.code == 'undefined_class');
+    } else {
+      expect(result.fixes, hasLength(1));
+      fix = result.fixes.first;
+      expect(fix.error.code, 'undefined_class');
+    }
 
     // expect a suggestion to add the dart:async import
-    AnalysisErrorFixes fix = result.fixes.first;
-    expect(fix.error.code, 'undefined_class');
     expect(fix.fixes, isNotEmpty);
 
     SourceChange change = fix.fixes.singleWhere(
diff --git a/pkg/analysis_server/test/integration/edit/get_refactoring_test.dart b/pkg/analysis_server/test/integration/edit/get_refactoring_test.dart
index ef0bd5a..1786ee6 100644
--- a/pkg/analysis_server/test/integration/edit/get_refactoring_test.dart
+++ b/pkg/analysis_server/test/integration/edit/get_refactoring_test.dart
@@ -70,8 +70,4 @@
 class GetRefactoringTest_UseCFE extends GetRefactoringTest {
   @override
   bool get useCFE => true;
-
-  @override
-  @failingTest
-  test_rename() => super.test_rename();
 }
diff --git a/pkg/analysis_server/test/integration/edit/get_statement_completion_test.dart b/pkg/analysis_server/test/integration/edit/get_statement_completion_test.dart
index 8f95a0a..8d7c14e 100644
--- a/pkg/analysis_server/test/integration/edit/get_statement_completion_test.dart
+++ b/pkg/analysis_server/test/integration/edit/get_statement_completion_test.dart
@@ -56,8 +56,4 @@
 class GetStatementCompletionTest_UseCFE extends GetStatementCompletionTest {
   @override
   bool get useCFE => true;
-
-  @override
-  @failingTest
-  test_statement_completion() => super.test_statement_completion();
 }
diff --git a/pkg/analysis_server/test/integration/edit/import_elements_test.dart b/pkg/analysis_server/test/integration/edit/import_elements_test.dart
index fef3f82..c2b6972 100644
--- a/pkg/analysis_server/test/integration/edit/import_elements_test.dart
+++ b/pkg/analysis_server/test/integration/edit/import_elements_test.dart
@@ -75,7 +75,7 @@
    * Check that an edit.importElements request with the given list of [elements]
    * produces no edits.
    */
-  Future<Null> checkNoEdits(List<ImportedElements> elements) async {
+  Future<void> checkNoEdits(List<ImportedElements> elements) async {
     EditImportElementsResult result =
         await sendEditImportElements(pathname, <ImportedElements>[]);
 
diff --git a/pkg/analysis_server/test/mocks.dart b/pkg/analysis_server/test/mocks.dart
index 15a77db..9286f27 100644
--- a/pkg/analysis_server/test/mocks.dart
+++ b/pkg/analysis_server/test/mocks.dart
@@ -57,7 +57,10 @@
   List<Notification> notificationsReceived = [];
   bool _closed = false;
 
+  String name;
+
   MockServerChannel();
+
   @override
   void close() {
     _closed = true;
@@ -83,6 +86,8 @@
     }
     notificationsReceived.add(notification);
     if (errorCompleter != null && notification.event == 'server.error') {
+      print(
+          '[server.error] test: $name message: ${notification.params['message']}');
       errorCompleter.completeError(
           new ServerError(notification.params['message']),
           new StackTrace.fromString(notification.params['stackTrace']));
@@ -141,8 +146,12 @@
     Future<Response> response =
         responseController.stream.firstWhere((response) => response.id == id);
     if (throwOnError) {
-      errorCompleter ??= new Completer<Response>();
-      return Future.any([response, errorCompleter.future]);
+      errorCompleter = new Completer<Response>();
+      try {
+        return Future.any([response, errorCompleter.future]);
+      } finally {
+        errorCompleter = null;
+      }
     }
     return response;
   }
diff --git a/pkg/analysis_server/test/search/declarations_test.dart b/pkg/analysis_server/test/search/declarations_test.dart
index 6659953..d6a495d 100644
--- a/pkg/analysis_server/test/search/declarations_test.dart
+++ b/pkg/analysis_server/test/search/declarations_test.dart
@@ -186,7 +186,7 @@
     assertHas('tf2', ElementKind.FUNCTION_TYPE_ALIAS);
   }
 
-  Future<Null> _getDeclarations(
+  Future<void> _getDeclarations(
       {String file, String pattern, int maxResults}) async {
     Request request = new SearchGetElementDeclarationsParams(
             file: file, pattern: pattern, maxResults: maxResults)
diff --git a/pkg/analysis_server/test/search/element_references_test.dart b/pkg/analysis_server/test/search/element_references_test.dart
index a2281af..5450ed7 100644
--- a/pkg/analysis_server/test/search/element_references_test.dart
+++ b/pkg/analysis_server/test/search/element_references_test.dart
@@ -28,7 +28,7 @@
     expect(result.isPotential, isPotential);
   }
 
-  Future<Null> findElementReferences(
+  Future<void> findElementReferences(
       String search, bool includePotential) async {
     int offset = findOffset(search);
     await waitForTasksFinished();
diff --git a/pkg/analysis_server/test/search/type_hierarchy_test.dart b/pkg/analysis_server/test/search/type_hierarchy_test.dart
index 9da3393..0331546 100644
--- a/pkg/analysis_server/test/search/type_hierarchy_test.dart
+++ b/pkg/analysis_server/test/search/type_hierarchy_test.dart
@@ -12,7 +12,6 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import '../analysis_abstract.dart';
-import '../test_utilities/utillities.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -1087,7 +1086,8 @@
   @failingTest
   @override
   test_class_extendsTypeB() {
-    return callFailingTest(super.test_class_extendsTypeB);
+    fail('Timeout');
+//    return callFailingTest(super.test_class_extendsTypeB);
   }
 
   @failingTest
diff --git a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
index 5e67bab..8271e2b 100644
--- a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
@@ -418,13 +418,17 @@
 
   test_ArgumentList_Flutter_MethodExpression_children() async {
     // Ensure we don't generate params for a method call
+    // TODO(brianwilkerson) This test has been changed so that it no longer has
+    // anything to do with Flutter (by moving the declaration of `foo` out of
+    // the 'material' library). Determine whether the test is still valid.
     addFlutterPackage();
 
     addTestSource('''
 import 'package:flutter/material.dart';
 
 main() {
-foo(^);
+  foo(^);
+}
 
 foo({String children}) {}
 ''');
@@ -892,7 +896,6 @@
   test_ArgumentList_local_function_1() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg) { }
       class B { }
       String bar() => true;
@@ -904,7 +907,6 @@
   test_ArgumentList_local_function_2() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg1, int arg2) { }
       class B { }
       String bar() => true;
@@ -916,7 +918,6 @@
   test_ArgumentList_local_function_3() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg1, int arg2) { }
       class B { }
       String bar() => true;
@@ -928,7 +929,6 @@
   test_ArgumentList_local_function_3a() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg1, int arg2, {bool arg3}) { }
       class B { }
       String bar() => true;
@@ -940,7 +940,6 @@
   test_ArgumentList_local_function_3b() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg1, int arg2, {bool arg3}) { }
       class B { }
       String bar() => true;
@@ -952,7 +951,6 @@
   test_ArgumentList_local_function_3c() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg1, int arg2, {bool arg3}) { }
       class B { }
       String bar() => true;
@@ -964,7 +962,6 @@
   test_ArgumentList_local_function_3d() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
       expect(arg1, int arg2, {bool arg3}) { }
       class B { }
       String bar() => true;
@@ -1052,11 +1049,6 @@
 
   @failingTest
   @override
-  test_ArgumentList_Flutter_MethodExpression_children() =>
-      super.test_ArgumentList_Flutter_MethodExpression_children();
-
-  @failingTest
-  @override
   test_ArgumentList_local_constructor_named_param_4() =>
       super.test_ArgumentList_local_constructor_named_param_4();
 
@@ -1064,39 +1056,4 @@
   @override
   test_ArgumentList_local_constructor_named_param_5() =>
       super.test_ArgumentList_local_constructor_named_param_5();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_1() =>
-      super.test_ArgumentList_local_function_1();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_2() =>
-      super.test_ArgumentList_local_function_2();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_3() =>
-      super.test_ArgumentList_local_function_3();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_3a() =>
-      super.test_ArgumentList_local_function_3a();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_3b() =>
-      super.test_ArgumentList_local_function_3b();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_3c() =>
-      super.test_ArgumentList_local_function_3c();
-
-  @failingTest
-  @override
-  test_ArgumentList_local_function_3d() =>
-      super.test_ArgumentList_local_function_3d();
 }
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
index f47d69d..b243c9d 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
@@ -47,7 +47,7 @@
    */
   bool get suggestConstructorsWithoutNew => true;
 
-  bool get usingFastaParser => analyzer.Parser.useFasta;
+  bool get usingFastaParser => useCFE || analyzer.Parser.useFasta;
 
   void addTestSource(String content) {
     expect(completionOffset, isNull, reason: 'Call addTestUnit exactly once');
@@ -464,7 +464,7 @@
    * Return a [Future] that completes with the containing library information
    * after it is accessible via [context.getLibrariesContaining].
    */
-  Future<Null> computeLibrariesContaining([int times = 200]) {
+  Future<void> computeLibrariesContaining([int times = 200]) {
     return driver.getResult(testFile).then((result) => null);
   }
 
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
index 75ab1eb..c010d63 100644
--- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -1886,18 +1886,6 @@
 
   @failingTest
   @override
-  test_anonymous_function_async2() => super.test_anonymous_function_async2();
-
-  @failingTest
-  @override
-  test_anonymous_function_async7() => super.test_anonymous_function_async7();
-
-  @failingTest
-  @override
-  test_anonymous_function_async9() => super.test_anonymous_function_async9();
-
-  @failingTest
-  @override
   test_class_extends_name() => super.test_class_extends_name();
 
   @failingTest
@@ -1922,10 +1910,6 @@
 
   @failingTest
   @override
-  test_function_async() => super.test_function_async();
-
-  @failingTest
-  @override
   test_function_async4() => super.test_function_async4();
 
   @failingTest
diff --git a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
index a7eeb84..bf2de54 100644
--- a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
+++ b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
@@ -300,10 +300,6 @@
 class _ControlFlowCompletionTest_UseCfe extends _ControlFlowCompletionTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_ifNoBlock() => super.test_ifNoBlock();
 }
 
 @reflectiveTest
@@ -842,18 +838,6 @@
 class _ExpressionCompletionTest_UseCfe extends _ExpressionCompletionTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_listAssign() => super.test_listAssign();
-
-  @failingTest
-  @override
-  test_listAssignMultiLine() => super.test_listAssignMultiLine();
-
-  @failingTest
-  @override
-  test_stringAssign() => super.test_stringAssign();
 }
 
 @reflectiveTest
@@ -1658,10 +1642,6 @@
 class _SimpleCompletionTest_UseCfe extends _SimpleCompletionTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_semicolonVar() => super.test_semicolonVar();
 }
 
 @reflectiveTest
diff --git a/pkg/analysis_server/test/services/correction/fix_test.dart b/pkg/analysis_server/test/services/correction/fix_test.dart
index 865cf03..6b5077f 100644
--- a/pkg/analysis_server/test/services/correction/fix_test.dart
+++ b/pkg/analysis_server/test/services/correction/fix_test.dart
@@ -995,6 +995,44 @@
 ''');
   }
 
+  test_addMissingParameter_constructor_named_required_hasOne() async {
+    await resolveTestUnit('''
+class A {
+  A.named(int a) {}
+}
+main() {
+  new A.named(1, 2.0);
+}
+''');
+    await assertHasFix(DartFixKind.ADD_MISSING_PARAMETER_REQUIRED, '''
+class A {
+  A.named(int a, double d) {}
+}
+main() {
+  new A.named(1, 2.0);
+}
+''');
+  }
+
+  test_addMissingParameter_constructor_unnamed_required_hasOne() async {
+    await resolveTestUnit('''
+class A {
+  A(int a) {}
+}
+main() {
+  new A(1, 2.0);
+}
+''');
+    await assertHasFix(DartFixKind.ADD_MISSING_PARAMETER_REQUIRED, '''
+class A {
+  A(int a, double d) {}
+}
+main() {
+  new A(1, 2.0);
+}
+''');
+  }
+
   test_addMissingParameter_function_positional_hasNamed() async {
     await resolveTestUnit('''
 test({int a}) {}
@@ -5146,28 +5184,6 @@
 ''');
   }
 
-  test_invokeConstructorUsingNew() async {
-    if (previewDart2) {
-      return;
-    }
-    await resolveTestUnit('''
-class C {
-  C.c();
-}
-main() {
-  C c = C.c();
-}
-''');
-    await assertHasFix(DartFixKind.INVOKE_CONSTRUCTOR_USING_NEW, '''
-class C {
-  C.c();
-}
-main() {
-  C c = new C.c();
-}
-''');
-  }
-
   test_isNotNull() async {
     await resolveTestUnit('''
 main(p) {
@@ -7095,23 +7111,13 @@
 
   @failingTest
   @override
-  test_addExplicitCast_assignment_general() =>
-      super.test_addExplicitCast_assignment_general();
+  test_addExplicitCast_assignment_list() =>
+      super.test_addExplicitCast_assignment_list();
 
   @failingTest
   @override
-  test_addExplicitCast_assignment_general_all() =>
-      super.test_addExplicitCast_assignment_general_all();
-
-  @failingTest
-  @override
-  test_addExplicitCast_assignment_map() =>
-      super.test_addExplicitCast_assignment_map();
-
-  @failingTest
-  @override
-  test_addExplicitCast_assignment_map_all() =>
-      super.test_addExplicitCast_assignment_map_all();
+  test_addExplicitCast_assignment_list_all() =>
+      super.test_addExplicitCast_assignment_list_all();
 
   @failingTest
   @override
@@ -7125,33 +7131,13 @@
 
   @failingTest
   @override
-  test_addExplicitCast_assignment_set() =>
-      super.test_addExplicitCast_assignment_set();
+  test_addExplicitCast_declaration_list() =>
+      super.test_addExplicitCast_declaration_list();
 
   @failingTest
   @override
-  test_addExplicitCast_assignment_set_all() =>
-      super.test_addExplicitCast_assignment_set_all();
-
-  @failingTest
-  @override
-  test_addExplicitCast_declaration_general() =>
-      super.test_addExplicitCast_declaration_general();
-
-  @failingTest
-  @override
-  test_addExplicitCast_declaration_general_all() =>
-      super.test_addExplicitCast_declaration_general_all();
-
-  @failingTest
-  @override
-  test_addExplicitCast_declaration_map() =>
-      super.test_addExplicitCast_declaration_map();
-
-  @failingTest
-  @override
-  test_addExplicitCast_declaration_map_all() =>
-      super.test_addExplicitCast_declaration_map_all();
+  test_addExplicitCast_declaration_list_all() =>
+      super.test_addExplicitCast_declaration_list_all();
 
   @failingTest
   @override
@@ -7165,16 +7151,6 @@
 
   @failingTest
   @override
-  test_addExplicitCast_declaration_set() =>
-      super.test_addExplicitCast_declaration_set();
-
-  @failingTest
-  @override
-  test_addExplicitCast_declaration_set_all() =>
-      super.test_addExplicitCast_declaration_set_all();
-
-  @failingTest
-  @override
   test_addFieldFormalParameters_flutter() =>
       super.test_addFieldFormalParameters_flutter();
 
@@ -7200,91 +7176,6 @@
 
   @failingTest
   @override
-  test_addMissingParameter_function_positional_hasZero() =>
-      super.test_addMissingParameter_function_positional_hasZero();
-
-  @failingTest
-  @override
-  test_addMissingParameter_function_required_hasNamed() =>
-      super.test_addMissingParameter_function_required_hasNamed();
-
-  @failingTest
-  @override
-  test_addMissingParameter_function_required_hasOne() =>
-      super.test_addMissingParameter_function_required_hasOne();
-
-  @failingTest
-  @override
-  test_addMissingParameter_function_required_hasZero() =>
-      super.test_addMissingParameter_function_required_hasZero();
-
-  @failingTest
-  @override
-  test_addMissingParameter_method_positional_hasOne() =>
-      super.test_addMissingParameter_method_positional_hasOne();
-
-  @failingTest
-  @override
-  test_addMissingParameter_method_required_hasOne() =>
-      super.test_addMissingParameter_method_required_hasOne();
-
-  @failingTest
-  @override
-  test_addMissingParameter_method_required_hasZero() =>
-      super.test_addMissingParameter_method_required_hasZero();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_constructor_hasNamed() =>
-      super.test_addMissingParameterNamed_constructor_hasNamed();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_constructor_hasRequired() =>
-      super.test_addMissingParameterNamed_constructor_hasRequired();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_constructor_noParameters() =>
-      super.test_addMissingParameterNamed_constructor_noParameters();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_constructor_noParameters_named() =>
-      super.test_addMissingParameterNamed_constructor_noParameters_named();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_function_hasNamed() =>
-      super.test_addMissingParameterNamed_function_hasNamed();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_function_hasRequired() =>
-      super.test_addMissingParameterNamed_function_hasRequired();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_function_noParameters() =>
-      super.test_addMissingParameterNamed_function_noParameters();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_method_hasNamed() =>
-      super.test_addMissingParameterNamed_method_hasNamed();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_method_hasRequired() =>
-      super.test_addMissingParameterNamed_method_hasRequired();
-
-  @failingTest
-  @override
-  test_addMissingParameterNamed_method_noParameters() =>
-      super.test_addMissingParameterNamed_method_noParameters();
-
-  @failingTest
-  @override
   test_addMissingRequiredArg_multiple() =>
       super.test_addMissingRequiredArg_multiple();
 
@@ -7351,37 +7242,8 @@
 
   @failingTest
   @override
-  test_convertToNamedArguments_OK_instanceCreation() =>
-      super.test_convertToNamedArguments_OK_instanceCreation();
-
-  @failingTest
-  @override
-  test_convertToNamedArguments_OK_instanceCreation_hasPositional() =>
-      super.test_convertToNamedArguments_OK_instanceCreation_hasPositional();
-
-  @failingTest
-  @override
-  test_convertToNamedArguments_OK_methodInvocation() =>
-      super.test_convertToNamedArguments_OK_methodInvocation();
-
-  @failingTest
-  @override
-  test_createClass() => super.test_createClass();
-
-  @failingTest
-  @override
-  test_createClass_inLibraryOfPrefix() =>
-      super.test_createClass_inLibraryOfPrefix();
-
-  @failingTest
-  @override
-  test_createClass_innerLocalFunction() =>
-      super.test_createClass_innerLocalFunction();
-
-  @failingTest
-  @override
-  test_createClass_instanceCreation_withoutNew_fromFunction() =>
-      super.test_createClass_instanceCreation_withoutNew_fromFunction();
+  test_changeTypeAnnotation_OK_simple() =>
+      super.test_changeTypeAnnotation_OK_simple();
 
   @failingTest
   @override
@@ -7390,10 +7252,6 @@
 
   @failingTest
   @override
-  test_createClass_itemOfList() => super.test_createClass_itemOfList();
-
-  @failingTest
-  @override
   test_createClass_itemOfList_inAnnotation() =>
       super.test_createClass_itemOfList_inAnnotation();
 
@@ -7419,11 +7277,6 @@
 
   @failingTest
   @override
-  test_createConstructor_insteadOfSyntheticDefault() =>
-      super.test_createConstructor_insteadOfSyntheticDefault();
-
-  @failingTest
-  @override
   test_createConstructor_named() => super.test_createConstructor_named();
 
   @failingTest
@@ -7433,31 +7286,6 @@
 
   @failingTest
   @override
-  test_createConstructorSuperExplicit() =>
-      super.test_createConstructorSuperExplicit();
-
-  @failingTest
-  @override
-  test_createConstructorSuperExplicit_hasInitializers() =>
-      super.test_createConstructorSuperExplicit_hasInitializers();
-
-  @failingTest
-  @override
-  test_createConstructorSuperExplicit_named() =>
-      super.test_createConstructorSuperExplicit_named();
-
-  @failingTest
-  @override
-  test_createConstructorSuperExplicit_named_private() =>
-      super.test_createConstructorSuperExplicit_named_private();
-
-  @failingTest
-  @override
-  test_createConstructorSuperExplicit_typeArgument() =>
-      super.test_createConstructorSuperExplicit_typeArgument();
-
-  @failingTest
-  @override
   test_createConstructorSuperImplicit() =>
       super.test_createConstructorSuperImplicit();
 
@@ -7478,11 +7306,6 @@
 
   @failingTest
   @override
-  test_createConstructorSuperImplicit_private() =>
-      super.test_createConstructorSuperImplicit_private();
-
-  @failingTest
-  @override
   test_createConstructorSuperImplicit_typeArgument() =>
       super.test_createConstructorSuperImplicit_typeArgument();
 
@@ -7576,45 +7399,6 @@
 
   @failingTest
   @override
-  test_createLocalVariable_functionType_named() =>
-      super.test_createLocalVariable_functionType_named();
-
-  @failingTest
-  @override
-  test_createLocalVariable_functionType_named_generic() =>
-      super.test_createLocalVariable_functionType_named_generic();
-
-  @override
-  test_createLocalVariable_functionType_synthetic() =>
-      super.test_createLocalVariable_functionType_synthetic();
-
-  @failingTest
-  @override
-  test_createLocalVariable_read_typeAssignment() =>
-      super.test_createLocalVariable_read_typeAssignment();
-
-  @failingTest
-  @override
-  test_createLocalVariable_read_typeCondition() =>
-      super.test_createLocalVariable_read_typeCondition();
-
-  @failingTest
-  @override
-  test_createLocalVariable_read_typeInvocationArgument() =>
-      super.test_createLocalVariable_read_typeInvocationArgument();
-
-  @failingTest
-  @override
-  test_createLocalVariable_read_typeInvocationTarget() =>
-      super.test_createLocalVariable_read_typeInvocationTarget();
-
-  @failingTest
-  @override
-  test_createLocalVariable_withImport() =>
-      super.test_createLocalVariable_withImport();
-
-  @failingTest
-  @override
   test_createLocalVariable_write_assignment() =>
       super.test_createLocalVariable_write_assignment();
 
@@ -7625,85 +7409,16 @@
 
   @failingTest
   @override
-  test_createMissingOverrides_field_untyped() =>
-      super.test_createMissingOverrides_field_untyped();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_functionTypeAlias() =>
-      super.test_createMissingOverrides_functionTypeAlias();
-
-  @failingTest
-  @override
   test_createMissingOverrides_functionTypedParameter() =>
       super.test_createMissingOverrides_functionTypedParameter();
 
   @failingTest
   @override
-  test_createMissingOverrides_generics_typeArguments() =>
-      super.test_createMissingOverrides_generics_typeArguments();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_generics_typeParameters() =>
-      super.test_createMissingOverrides_generics_typeParameters();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_getter() =>
-      super.test_createMissingOverrides_getter();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_importPrefix() =>
-      super.test_createMissingOverrides_importPrefix();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_mergeToField_getterSetter() =>
-      super.test_createMissingOverrides_mergeToField_getterSetter();
-
-  @failingTest
-  @override
   test_createMissingOverrides_method() =>
       super.test_createMissingOverrides_method();
 
   @failingTest
   @override
-  test_createMissingOverrides_method_emptyClassBody() =>
-      super.test_createMissingOverrides_method_emptyClassBody();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_method_generic() =>
-      super.test_createMissingOverrides_method_generic();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_method_generic_withBounds() =>
-      super.test_createMissingOverrides_method_generic_withBounds();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_method_notEmptyClassBody() =>
-      super.test_createMissingOverrides_method_notEmptyClassBody();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_operator() =>
-      super.test_createMissingOverrides_operator();
-
-  @failingTest
-  @override
-  test_createMissingOverrides_setter() =>
-      super.test_createMissingOverrides_setter();
-
-  @failingTest
-  @override
-  test_createNoSuchMethod_OK() => super.test_createNoSuchMethod_OK();
-
-  @failingTest
-  @override
   test_creationFunction_forFunctionType_cascadeSecond() =>
       super.test_creationFunction_forFunctionType_cascadeSecond();
 
@@ -7749,10 +7464,6 @@
 
   @failingTest
   @override
-  test_expectedToken_semicolon() => super.test_expectedToken_semicolon();
-
-  @failingTest
-  @override
   test_illegalAsyncReturnType_adjacentNodes() =>
       super.test_illegalAsyncReturnType_adjacentNodes();
 
@@ -7773,16 +7484,6 @@
 
   @failingTest
   @override
-  test_importLibraryPackage_preferDirectOverExport() =>
-      super.test_importLibraryPackage_preferDirectOverExport();
-
-  @failingTest
-  @override
-  test_importLibraryPackage_preferDirectOverExport_src() =>
-      super.test_importLibraryPackage_preferDirectOverExport_src();
-
-  @failingTest
-  @override
   test_importLibraryProject_BAD_inLibSrc_differentContextRoot() =>
       super.test_importLibraryProject_BAD_inLibSrc_differentContextRoot();
 
@@ -7798,51 +7499,11 @@
 
   @failingTest
   @override
-  test_importLibraryProject_withClass_inParentFolder() =>
-      super.test_importLibraryProject_withClass_inParentFolder();
-
-  @failingTest
-  @override
-  test_importLibraryProject_withClass_inRelativeFolder() =>
-      super.test_importLibraryProject_withClass_inRelativeFolder();
-
-  @failingTest
-  @override
-  test_importLibraryProject_withClass_inSameFolder() =>
-      super.test_importLibraryProject_withClass_inSameFolder();
-
-  @failingTest
-  @override
-  test_importLibraryProject_withClass_instanceCreation_implicit() =>
-      super.test_importLibraryProject_withClass_instanceCreation_implicit();
-
-  @failingTest
-  @override
-  test_importLibraryProject_withFunction() =>
-      super.test_importLibraryProject_withFunction();
-
-  @failingTest
-  @override
   test_importLibraryProject_withFunction_unresolvedMethod() =>
       super.test_importLibraryProject_withFunction_unresolvedMethod();
 
   @failingTest
   @override
-  test_importLibraryProject_withFunctionTypeAlias() =>
-      super.test_importLibraryProject_withFunctionTypeAlias();
-
-  @failingTest
-  @override
-  test_importLibraryProject_withTopLevelVariable() =>
-      super.test_importLibraryProject_withTopLevelVariable();
-
-  @failingTest
-  @override
-  test_importLibrarySdk_withClass_AsExpression() =>
-      super.test_importLibrarySdk_withClass_AsExpression();
-
-  @failingTest
-  @override
   test_importLibrarySdk_withClass_instanceCreation_explicitNew() =>
       super.test_importLibrarySdk_withClass_instanceCreation_explicitNew();
 
@@ -7865,46 +7526,11 @@
 
   @failingTest
   @override
-  test_importLibrarySdk_withClass_invocationTarget() =>
-      super.test_importLibrarySdk_withClass_invocationTarget();
-
-  @failingTest
-  @override
-  test_importLibrarySdk_withClass_IsExpression() =>
-      super.test_importLibrarySdk_withClass_IsExpression();
-
-  @failingTest
-  @override
-  test_importLibrarySdk_withClass_itemOfList() =>
-      super.test_importLibrarySdk_withClass_itemOfList();
-
-  @failingTest
-  @override
   test_importLibrarySdk_withClass_itemOfList_inAnnotation() =>
       super.test_importLibrarySdk_withClass_itemOfList_inAnnotation();
 
   @failingTest
   @override
-  test_importLibrarySdk_withClass_typeAnnotation() =>
-      super.test_importLibrarySdk_withClass_typeAnnotation();
-
-  @failingTest
-  @override
-  test_importLibrarySdk_withClass_typeAnnotation_PrefixedIdentifier() =>
-      super.test_importLibrarySdk_withClass_typeAnnotation_PrefixedIdentifier();
-
-  @failingTest
-  @override
-  test_importLibrarySdk_withClass_typeArgument() =>
-      super.test_importLibrarySdk_withClass_typeArgument();
-
-  @failingTest
-  @override
-  test_importLibrarySdk_withTopLevelVariable() =>
-      super.test_importLibrarySdk_withTopLevelVariable();
-
-  @failingTest
-  @override
   test_importLibrarySdk_withTopLevelVariable_annotation() =>
       super.test_importLibrarySdk_withTopLevelVariable_annotation();
 
@@ -7940,11 +7566,6 @@
 
   @failingTest
   @override
-  test_removeParentheses_inGetterDeclaration() =>
-      super.test_removeParentheses_inGetterDeclaration();
-
-  @failingTest
-  @override
   test_removeParentheses_inGetterInvocation() =>
       super.test_removeParentheses_inGetterInvocation();
 
@@ -7969,36 +7590,6 @@
 
   @failingTest
   @override
-  test_undefinedClass_useSimilar_fromThisLibrary() =>
-      super.test_undefinedClass_useSimilar_fromThisLibrary();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_bottomArgument() =>
-      super.test_undefinedFunction_create_bottomArgument();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_duplicateArgumentNames() =>
-      super.test_undefinedFunction_create_duplicateArgumentNames();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_dynamicArgument() =>
-      super.test_undefinedFunction_create_dynamicArgument();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_dynamicReturnType() =>
-      super.test_undefinedFunction_create_dynamicReturnType();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_fromFunction() =>
-      super.test_undefinedFunction_create_fromFunction();
-
-  @failingTest
-  @override
   test_undefinedFunction_create_fromMethod() =>
       super.test_undefinedFunction_create_fromMethod();
 
@@ -8014,61 +7605,6 @@
 
   @failingTest
   @override
-  test_undefinedFunction_create_importType() =>
-      super.test_undefinedFunction_create_importType();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_nullArgument() =>
-      super.test_undefinedFunction_create_nullArgument();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_bool_expressions() =>
-      super.test_undefinedFunction_create_returnType_bool_expressions();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_bool_statements() =>
-      super.test_undefinedFunction_create_returnType_bool_statements();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_fromAssignment_eq() =>
-      super.test_undefinedFunction_create_returnType_fromAssignment_eq();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_fromAssignment_plusEq() =>
-      super.test_undefinedFunction_create_returnType_fromAssignment_plusEq();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_fromBinary_right() =>
-      super.test_undefinedFunction_create_returnType_fromBinary_right();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_fromInitializer() =>
-      super.test_undefinedFunction_create_returnType_fromInitializer();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_fromInvocationArgument() =>
-      super.test_undefinedFunction_create_returnType_fromInvocationArgument();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_fromReturn() =>
-      super.test_undefinedFunction_create_returnType_fromReturn();
-
-  @failingTest
-  @override
-  test_undefinedFunction_create_returnType_void() =>
-      super.test_undefinedFunction_create_returnType_void();
-
-  @failingTest
-  @override
   test_undefinedFunction_useSimilar_fromImport() =>
       super.test_undefinedFunction_useSimilar_fromImport();
 
@@ -8141,15 +7677,6 @@
   @override
   test_undefinedSetter_useSimilar_unqualified() =>
       super.test_undefinedSetter_useSimilar_unqualified();
-
-  @failingTest
-  @override
-  test_useImportPrefix_withClass() => super.test_useImportPrefix_withClass();
-
-  @failingTest
-  @override
-  test_useImportPrefix_withTopLevelVariable() =>
-      super.test_useImportPrefix_withTopLevelVariable();
 }
 
 @reflectiveTest
@@ -8170,7 +7697,7 @@
     await _assertNoFix(kind, error);
   }
 
-  Future<Null> findLint(String src, String lintCode, {int length: 1}) async {
+  Future<void> findLint(String src, String lintCode, {int length: 1}) async {
     int errorOffset = src.indexOf('/*LINT*/');
     await resolveTestUnit(src.replaceAll('/*LINT*/', ''));
     error = new AnalysisError(
diff --git a/pkg/analysis_server/test/services/correction/organize_directives_test.dart b/pkg/analysis_server/test/services/correction/organize_directives_test.dart
index 15de1b9..cf5adfb 100644
--- a/pkg/analysis_server/test/services/correction/organize_directives_test.dart
+++ b/pkg/analysis_server/test/services/correction/organize_directives_test.dart
@@ -334,7 +334,7 @@
     expect(result, expectedCode);
   }
 
-  Future<Null> _computeUnitAndErrors(String code) async {
+  Future<void> _computeUnitAndErrors(String code) async {
     addTestSource(code);
     AnalysisResult result = await driver.getResult(testSource.fullName);
     testUnit = result.unit;
diff --git a/pkg/analysis_server/test/services/correction/sort_members_test.dart b/pkg/analysis_server/test/services/correction/sort_members_test.dart
index a299f93..88942ee 100644
--- a/pkg/analysis_server/test/services/correction/sort_members_test.dart
+++ b/pkg/analysis_server/test/services/correction/sort_members_test.dart
@@ -803,7 +803,7 @@
     expect(result, expectedCode);
   }
 
-  Future<Null> _parseTestUnit(String code) async {
+  Future<void> _parseTestUnit(String code) async {
     addTestSource(code);
     ParseResult result = await driver.parseFile(testSource.fullName);
     testUnit = result.unit;
diff --git a/pkg/analysis_server/test/services/refactoring/abstract_refactoring.dart b/pkg/analysis_server/test/services/refactoring/abstract_refactoring.dart
index 2685442..7acb0ce 100644
--- a/pkg/analysis_server/test/services/refactoring/abstract_refactoring.dart
+++ b/pkg/analysis_server/test/services/refactoring/abstract_refactoring.dart
@@ -159,11 +159,11 @@
         .resolveCompilationUnit(element.source, element.library);
   }
 
-  Future<Null> indexTestUnit(String code) async {
+  Future<void> indexTestUnit(String code) async {
     await resolveTestUnit(code);
   }
 
-  Future<Null> indexUnit(String file, String code) async {
+  Future<void> indexUnit(String file, String code) async {
     addSource(file, code);
   }
 
diff --git a/pkg/analysis_server/test/services/refactoring/convert_getter_to_method_test.dart b/pkg/analysis_server/test/services/refactoring/convert_getter_to_method_test.dart
index 66ed449..b823bc0 100644
--- a/pkg/analysis_server/test/services/refactoring/convert_getter_to_method_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/convert_getter_to_method_test.dart
@@ -167,16 +167,4 @@
 class ConvertGetterToMethodTest_UseCFE extends ConvertGetterToMethodTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_change_function() => super.test_change_function();
-
-  @failingTest
-  @override
-  test_change_method() => super.test_change_method();
-
-  @failingTest
-  @override
-  test_change_multipleFiles() => super.test_change_multipleFiles();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/convert_method_to_getter_test.dart b/pkg/analysis_server/test/services/refactoring/convert_method_to_getter_test.dart
index 28b9b71..ad14c41 100644
--- a/pkg/analysis_server/test/services/refactoring/convert_method_to_getter_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/convert_method_to_getter_test.dart
@@ -219,16 +219,4 @@
 class ConvertMethodToGetterTest_UseCFE extends ConvertMethodToGetterTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_change_function() => super.test_change_function();
-
-  @failingTest
-  @override
-  test_change_method() => super.test_change_method();
-
-  @failingTest
-  @override
-  test_change_multipleFiles() => super.test_change_multipleFiles();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/extract_method_test.dart b/pkg/analysis_server/test/services/refactoring/extract_method_test.dart
index eda761b..f37dc32 100644
--- a/pkg/analysis_server/test/services/refactoring/extract_method_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/extract_method_test.dart
@@ -2942,11 +2942,6 @@
 
   @failingTest
   @override
-  test_bad_conflict_topLevel_willHideInheritedMemberUsage() =>
-      super.test_bad_conflict_topLevel_willHideInheritedMemberUsage();
-
-  @failingTest
-  @override
   test_statements_parameters_localFunction() =>
       super.test_statements_parameters_localFunction();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/inline_local_test.dart b/pkg/analysis_server/test/services/refactoring/inline_local_test.dart
index 9da3c39..01d9e19 100644
--- a/pkg/analysis_server/test/services/refactoring/inline_local_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/inline_local_test.dart
@@ -643,137 +643,4 @@
 class InlineLocalTest_UseCFE extends InlineLocalTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_access() => super.test_access();
-
-  @failingTest
-  @override
-  test_bad_selectionVariable_hasAssignments_1() =>
-      super.test_bad_selectionVariable_hasAssignments_1();
-
-  @failingTest
-  @override
-  test_bad_selectionVariable_hasAssignments_2() =>
-      super.test_bad_selectionVariable_hasAssignments_2();
-
-  @failingTest
-  @override
-  test_OK_cascade_intoCascade() => super.test_OK_cascade_intoCascade();
-
-  @failingTest
-  @override
-  test_OK_cascade_intoNotCascade() => super.test_OK_cascade_intoNotCascade();
-
-  @failingTest
-  @override
-  test_OK_inSwitchCase() => super.test_OK_inSwitchCase();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_binaryExpression() =>
-      super.test_OK_intoStringInterpolation_binaryExpression();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_simpleIdentifier() =>
-      super.test_OK_intoStringInterpolation_simpleIdentifier();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_differentQuotes() =>
-      super.test_OK_intoStringInterpolation_string_differentQuotes();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_doubleQuotes() =>
-      super.test_OK_intoStringInterpolation_string_doubleQuotes();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_multiLineIntoMulti_leadingSpaces() => super
-      .test_OK_intoStringInterpolation_string_multiLineIntoMulti_leadingSpaces();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_multiLineIntoMulti_unixEOL() =>
-      super.test_OK_intoStringInterpolation_string_multiLineIntoMulti_unixEOL();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_multiLineIntoMulti_windowsEOL() => super
-      .test_OK_intoStringInterpolation_string_multiLineIntoMulti_windowsEOL();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_multiLineIntoSingle() =>
-      super.test_OK_intoStringInterpolation_string_multiLineIntoSingle();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_raw() =>
-      super.test_OK_intoStringInterpolation_string_raw();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_singleLineIntoMulti_doubleQuotes() => super
-      .test_OK_intoStringInterpolation_string_singleLineIntoMulti_doubleQuotes();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_singleLineIntoMulti_singleQuotes() => super
-      .test_OK_intoStringInterpolation_string_singleLineIntoMulti_singleQuotes();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_string_singleQuotes() =>
-      super.test_OK_intoStringInterpolation_string_singleQuotes();
-
-  @failingTest
-  @override
-  test_OK_intoStringInterpolation_stringInterpolation() =>
-      super.test_OK_intoStringInterpolation_stringInterpolation();
-
-  @failingTest
-  @override
-  test_OK_keepNextCommentedLine() => super.test_OK_keepNextCommentedLine();
-
-  @failingTest
-  @override
-  test_OK_oneUsage() => super.test_OK_oneUsage();
-
-  @failingTest
-  @override
-  test_OK_parenthesis_decrement_intoNegate() =>
-      super.test_OK_parenthesis_decrement_intoNegate();
-
-  @failingTest
-  @override
-  test_OK_parenthesis_instanceCreation_intoList() =>
-      super.test_OK_parenthesis_instanceCreation_intoList();
-
-  @failingTest
-  @override
-  test_OK_parenthesis_intoIndexExpression_index() =>
-      super.test_OK_parenthesis_intoIndexExpression_index();
-
-  @failingTest
-  @override
-  test_OK_parenthesis_intoParenthesizedExpression() =>
-      super.test_OK_parenthesis_intoParenthesizedExpression();
-
-  @failingTest
-  @override
-  test_OK_parenthesis_negate_intoNegate() =>
-      super.test_OK_parenthesis_negate_intoNegate();
-
-  @failingTest
-  @override
-  test_OK_parenthesis_plus_intoMultiply() =>
-      super.test_OK_parenthesis_plus_intoMultiply();
-
-  @failingTest
-  @override
-  test_OK_twoUsages() => super.test_OK_twoUsages();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/inline_method_test.dart b/pkg/analysis_server/test/services/refactoring/inline_method_test.dart
index 38f8626..e75781d 100644
--- a/pkg/analysis_server/test/services/refactoring/inline_method_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/inline_method_test.dart
@@ -1768,241 +1768,6 @@
 
   @failingTest
   @override
-  test_access_FunctionElement() => super.test_access_FunctionElement();
-
-  @failingTest
-  @override
-  test_access_MethodElement() => super.test_access_MethodElement();
-
-  @failingTest
-  @override
-  test_bad_async_intoSyncStar() => super.test_bad_async_intoSyncStar();
-
-  @failingTest
-  @override
-  test_bad_async_targetIsSync_doesNotReturnFuture() =>
-      super.test_bad_async_targetIsSync_doesNotReturnFuture();
-
-  @failingTest
-  @override
-  test_bad_cascadeInvocation() => super.test_bad_cascadeInvocation();
-
-  @failingTest
-  @override
-  test_bad_deleteSource_inlineOne() => super.test_bad_deleteSource_inlineOne();
-
-  @failingTest
-  @override
-  test_bad_reference_toClassMethod() =>
-      super.test_bad_reference_toClassMethod();
-
-  @failingTest
-  @override
-  test_bad_severalReturns() => super.test_bad_severalReturns();
-
-  @failingTest
-  @override
-  test_cascadeInCascade() => super.test_cascadeInCascade();
-
-  @failingTest
-  @override
-  test_fieldAccessor_getter() => super.test_fieldAccessor_getter();
-
-  @failingTest
-  @override
-  test_fieldAccessor_getter_PropertyAccess() =>
-      super.test_fieldAccessor_getter_PropertyAccess();
-
-  @failingTest
-  @override
-  test_fieldAccessor_setter() => super.test_fieldAccessor_setter();
-
-  @failingTest
-  @override
-  test_fieldAccessor_setter_PropertyAccess() =>
-      super.test_fieldAccessor_setter_PropertyAccess();
-
-  @failingTest
-  @override
-  test_function_expressionFunctionBody() =>
-      super.test_function_expressionFunctionBody();
-
-  @failingTest
-  @override
-  test_function_hasReturn_assign() => super.test_function_hasReturn_assign();
-
-  @failingTest
-  @override
-  test_function_hasReturn_hasReturnType() =>
-      super.test_function_hasReturn_hasReturnType();
-
-  @failingTest
-  @override
-  test_function_hasReturn_noVars_oneUsage() =>
-      super.test_function_hasReturn_noVars_oneUsage();
-
-  @failingTest
-  @override
-  test_function_multilineString() => super.test_function_multilineString();
-
-  @failingTest
-  @override
-  test_function_noReturn_hasVars_hasConflict_fieldSuperClass() =>
-      super.test_function_noReturn_hasVars_hasConflict_fieldSuperClass();
-
-  @failingTest
-  @override
-  test_function_noReturn_hasVars_hasConflict_fieldThisClass() =>
-      super.test_function_noReturn_hasVars_hasConflict_fieldThisClass();
-
-  @failingTest
-  @override
-  test_function_noReturn_hasVars_hasConflict_localAfter() =>
-      super.test_function_noReturn_hasVars_hasConflict_localAfter();
-
-  @failingTest
-  @override
-  test_function_noReturn_hasVars_hasConflict_localBefore() =>
-      super.test_function_noReturn_hasVars_hasConflict_localBefore();
-
-  @failingTest
-  @override
-  test_function_noReturn_hasVars_noConflict() =>
-      super.test_function_noReturn_hasVars_noConflict();
-
-  @failingTest
-  @override
-  test_function_noReturn_noVars_oneUsage() =>
-      super.test_function_noReturn_noVars_oneUsage();
-
-  @failingTest
-  @override
-  test_function_noReturn_noVars_useIndentation() =>
-      super.test_function_noReturn_noVars_useIndentation();
-
-  @failingTest
-  @override
-  test_function_noReturn_voidReturnType() =>
-      super.test_function_noReturn_voidReturnType();
-
-  @failingTest
-  @override
-  test_function_notStatement_oneStatement_assign() =>
-      super.test_function_notStatement_oneStatement_assign();
-
-  @failingTest
-  @override
-  test_function_notStatement_oneStatement_variableDeclaration() =>
-      super.test_function_notStatement_oneStatement_variableDeclaration();
-
-  @failingTest
-  @override
-  test_function_notStatement_severalStatements() =>
-      super.test_function_notStatement_severalStatements();
-
-  @failingTest
-  @override
-  test_function_notStatement_zeroStatements() =>
-      super.test_function_notStatement_zeroStatements();
-
-  @failingTest
-  @override
-  test_function_singleStatement() => super.test_function_singleStatement();
-
-  @failingTest
-  @override
-  test_getter_async_targetIsAsync() => super.test_getter_async_targetIsAsync();
-
-  @failingTest
-  @override
-  test_getter_async_targetIsAsyncStar() =>
-      super.test_getter_async_targetIsAsyncStar();
-
-  @failingTest
-  @override
-  test_getter_async_targetIsSync() => super.test_getter_async_targetIsSync();
-
-  @failingTest
-  @override
-  test_getter_async_targetIsSync2() => super.test_getter_async_targetIsSync2();
-
-  @failingTest
-  @override
-  test_getter_classMember_instance() =>
-      super.test_getter_classMember_instance();
-
-  @failingTest
-  @override
-  test_getter_classMember_static() => super.test_getter_classMember_static();
-
-  @failingTest
-  @override
-  test_getter_topLevel() => super.test_getter_topLevel();
-
-  @failingTest
-  @override
-  test_initialMode_all() => super.test_initialMode_all();
-
-  @failingTest
-  @override
-  test_initialMode_single() => super.test_initialMode_single();
-
-  @failingTest
-  @override
-  test_method_async() => super.test_method_async();
-
-  @failingTest
-  @override
-  test_method_async2() => super.test_method_async2();
-
-  @failingTest
-  @override
-  test_method_emptyBody() => super.test_method_emptyBody();
-
-  @failingTest
-  @override
-  test_method_fieldInstance() => super.test_method_fieldInstance();
-
-  @failingTest
-  @override
-  test_method_fieldStatic() => super.test_method_fieldStatic();
-
-  @failingTest
-  @override
-  test_method_fieldStatic_sameClass() =>
-      super.test_method_fieldStatic_sameClass();
-
-  @failingTest
-  @override
-  test_method_methodInstance() => super.test_method_methodInstance();
-
-  @failingTest
-  @override
-  test_method_methodStatic() => super.test_method_methodStatic();
-
-  @failingTest
-  @override
-  test_method_singleStatement() => super.test_method_singleStatement();
-
-  @failingTest
-  @override
-  test_method_this() => super.test_method_this();
-
-  @failingTest
-  @override
-  test_method_unqualifiedInvocation() =>
-      super.test_method_unqualifiedInvocation();
-
-  @failingTest
-  @override
-  test_namedArgument_inBody() => super.test_namedArgument_inBody();
-
-  @failingTest
-  @override
-  test_namedArguments() => super.test_namedArguments();
-
-  @failingTest
-  @override
   test_noArgument_named_hasDefault() =>
       super.test_noArgument_named_hasDefault();
 
@@ -2010,76 +1775,4 @@
   @override
   test_noArgument_positional_hasDefault() =>
       super.test_noArgument_positional_hasDefault();
-
-  @failingTest
-  @override
-  test_noArgument_positional_noDefault() =>
-      super.test_noArgument_positional_noDefault();
-
-  @failingTest
-  @override
-  test_noArgument_required() => super.test_noArgument_required();
-
-  @failingTest
-  @override
-  test_reference_expressionBody() => super.test_reference_expressionBody();
-
-  @failingTest
-  @override
-  test_reference_noStatement() => super.test_reference_noStatement();
-
-  @failingTest
-  @override
-  test_reference_toLocal() => super.test_reference_toLocal();
-
-  @failingTest
-  @override
-  test_reference_toTopLevel() => super.test_reference_toTopLevel();
-
-  @failingTest
-  @override
-  test_removeEmptyLinesBefore_method() =>
-      super.test_removeEmptyLinesBefore_method();
-
-  @failingTest
-  @override
-  test_setter_classMember_instance() =>
-      super.test_setter_classMember_instance();
-
-  @failingTest
-  @override
-  test_setter_topLevel() => super.test_setter_topLevel();
-
-  @failingTest
-  @override
-  test_singleExpression_oneUsage() => super.test_singleExpression_oneUsage();
-
-  @failingTest
-  @override
-  test_singleExpression_oneUsage_keepMethod() =>
-      super.test_singleExpression_oneUsage_keepMethod();
-
-  @failingTest
-  @override
-  test_singleExpression_twoUsages() => super.test_singleExpression_twoUsages();
-
-  @failingTest
-  @override
-  test_singleExpression_twoUsages_inlineOne() =>
-      super.test_singleExpression_twoUsages_inlineOne();
-
-  @failingTest
-  @override
-  test_singleExpression_wrapIntoParenthesized_alreadyInMethod() =>
-      super.test_singleExpression_wrapIntoParenthesized_alreadyInMethod();
-
-  @failingTest
-  @override
-  test_singleExpression_wrapIntoParenthesized_asNeeded() =>
-      super.test_singleExpression_wrapIntoParenthesized_asNeeded();
-
-  @failingTest
-  @override
-  test_singleExpression_wrapIntoParenthesized_bool() =>
-      super.test_singleExpression_wrapIntoParenthesized_bool();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/move_file_test.dart b/pkg/analysis_server/test/services/refactoring/move_file_test.dart
index 65c40fd..2b34847 100644
--- a/pkg/analysis_server/test/services/refactoring/move_file_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/move_file_test.dart
@@ -261,8 +261,4 @@
   @override
   test_file_containing_imports_exports_parts() =>
       callFailingTest(super.test_file_containing_imports_exports_parts());
-
-  @failingTest
-  @override
-  test_file_referenced_by_part() => super.test_file_referenced_by_part();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart b/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart
index 423668b..5b3e255 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart
@@ -926,120 +926,6 @@
 
   @failingTest
   @override
-  test_checkFinalConditions_classNameConflict_subClass() =>
-      super.test_checkFinalConditions_classNameConflict_subClass();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_classNameConflict_superClass() =>
-      super.test_checkFinalConditions_classNameConflict_superClass();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_OK_dropSuffix() =>
-      super.test_checkFinalConditions_OK_dropSuffix();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_OK_noShadow_nullVisibleRange() =>
-      super.test_checkFinalConditions_OK_noShadow_nullVisibleRange();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_publicToPrivate_usedInOtherLibrary() =>
-      super.test_checkFinalConditions_publicToPrivate_usedInOtherLibrary();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowed_byLocalFunction_inSameClass() =>
-      super.test_checkFinalConditions_shadowed_byLocalFunction_inSameClass();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowed_byLocalVariable_inSameClass() =>
-      super.test_checkFinalConditions_shadowed_byLocalVariable_inSameClass();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowed_byLocalVariable_inSubClass() =>
-      super.test_checkFinalConditions_shadowed_byLocalVariable_inSubClass();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowed_byLocalVariable_OK_qualifiedReference() =>
-      super
-          .test_checkFinalConditions_shadowed_byLocalVariable_OK_qualifiedReference();
-
-  @failingTest
-  @override
   test_checkFinalConditions_shadowed_byParameter_inSameClass() =>
       super.test_checkFinalConditions_shadowed_byParameter_inSameClass();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowedBySub_MethodElement() =>
-      super.test_checkFinalConditions_shadowedBySub_MethodElement();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowsSuper_FieldElement() =>
-      super.test_checkFinalConditions_shadowsSuper_FieldElement();
-
-  @failingTest
-  @override
-  test_createChange_FieldElement() => super.test_createChange_FieldElement();
-
-  @failingTest
-  @override
-  test_createChange_FieldElement_constructorFieldInitializer() =>
-      super.test_createChange_FieldElement_constructorFieldInitializer();
-
-  @failingTest
-  @override
-  test_createChange_FieldElement_fieldFormalParameter() =>
-      super.test_createChange_FieldElement_fieldFormalParameter();
-
-  @failingTest
-  @override
-  test_createChange_FieldElement_fieldFormalParameter_named() =>
-      super.test_createChange_FieldElement_fieldFormalParameter_named();
-
-  @failingTest
-  @override
-  test_createChange_FieldElement_invocation() =>
-      super.test_createChange_FieldElement_invocation();
-
-  @failingTest
-  @override
-  test_createChange_MethodElement() => super.test_createChange_MethodElement();
-
-  @failingTest
-  @override
-  test_createChange_MethodElement_potential() =>
-      super.test_createChange_MethodElement_potential();
-
-  @failingTest
-  @override
-  test_createChange_MethodElement_potential_inPubCache() =>
-      super.test_createChange_MethodElement_potential_inPubCache();
-
-  @failingTest
-  @override
-  test_createChange_MethodElement_potential_private_otherLibrary() =>
-      super.test_createChange_MethodElement_potential_private_otherLibrary();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_getter() =>
-      super.test_createChange_PropertyAccessorElement_getter();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_setter() =>
-      super.test_createChange_PropertyAccessorElement_setter();
-
-  @failingTest
-  @override
-  test_createChange_TypeParameterElement() =>
-      super.test_createChange_TypeParameterElement();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/rename_constructor_test.dart b/pkg/analysis_server/test/services/refactoring/rename_constructor_test.dart
index 1c318b8..752dd14 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_constructor_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_constructor_test.dart
@@ -260,11 +260,6 @@
 
   @failingTest
   @override
-  test_createChange_add_toSynthetic() =>
-      super.test_createChange_add_toSynthetic();
-
-  @failingTest
-  @override
   test_createChange_change() => super.test_createChange_change();
 
   @failingTest
diff --git a/pkg/analysis_server/test/services/refactoring/rename_import_test.dart b/pkg/analysis_server/test/services/refactoring/rename_import_test.dart
index 5929490..61e1d63 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_import_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_import_test.dart
@@ -237,20 +237,6 @@
 
   @failingTest
   @override
-  test_createChange_add() => super.test_createChange_add();
-
-  @failingTest
-  @override
-  test_createChange_add_interpolationExpression_hasCurlyBrackets() =>
-      super.test_createChange_add_interpolationExpression_hasCurlyBrackets();
-
-  @failingTest
-  @override
-  test_createChange_add_interpolationExpression_noCurlyBrackets() =>
-      super.test_createChange_add_interpolationExpression_noCurlyBrackets();
-
-  @failingTest
-  @override
   test_createChange_change_className() =>
       super.test_createChange_change_className();
 
diff --git a/pkg/analysis_server/test/services/refactoring/rename_local_test.dart b/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
index 8148453..578caaf 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
@@ -583,42 +583,4 @@
   @override
   test_checkFinalConditions_shadows_classMember_namedParameter() =>
       super.test_checkFinalConditions_shadows_classMember_namedParameter();
-
-  @failingTest
-  @override
-  test_createChange_localFunction() => super.test_createChange_localFunction();
-
-  @failingTest
-  @override
-  test_createChange_localFunction_sameNameDifferenceScopes() =>
-      super.test_createChange_localFunction_sameNameDifferenceScopes();
-
-  @failingTest
-  @override
-  test_createChange_localVariable() => super.test_createChange_localVariable();
-
-  @failingTest
-  @override
-  test_createChange_localVariable_sameNameDifferenceScopes() =>
-      super.test_createChange_localVariable_sameNameDifferenceScopes();
-
-  @failingTest
-  @override
-  test_createChange_parameter_named() =>
-      super.test_createChange_parameter_named();
-
-  @failingTest
-  @override
-  test_createChange_parameter_named_inOtherFile() =>
-      super.test_createChange_parameter_named_inOtherFile();
-
-  @failingTest
-  @override
-  test_createChange_parameter_named_updateHierarchy() =>
-      super.test_createChange_parameter_named_updateHierarchy();
-
-  @failingTest
-  @override
-  test_createChange_parameter_optionalPositional() =>
-      super.test_createChange_parameter_optionalPositional();
 }
diff --git a/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart b/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart
index a504b43..9046642 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart
@@ -620,121 +620,7 @@
 
   @failingTest
   @override
-  test_checkFinalConditions_OK_qualifiedSuper_MethodElement() =>
-      super.test_checkFinalConditions_OK_qualifiedSuper_MethodElement();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_publicToPrivate_usedInOtherLibrary() =>
-      super.test_checkFinalConditions_publicToPrivate_usedInOtherLibrary();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowedBy_MethodElement() =>
-      super.test_checkFinalConditions_shadowedBy_MethodElement();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowsInSubClass_importedLib() =>
-      super.test_checkFinalConditions_shadowsInSubClass_importedLib();
-
-  @failingTest
-  @override
   test_checkFinalConditions_shadowsInSubClass_importedLib_hideCombinator() =>
       callFailingTest(super
           .test_checkFinalConditions_shadowsInSubClass_importedLib_hideCombinator());
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowsInSubClass_MethodElement() =>
-      super.test_checkFinalConditions_shadowsInSubClass_MethodElement();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowsInSubClass_notImportedLib() =>
-      super.test_checkFinalConditions_shadowsInSubClass_notImportedLib();
-
-  @failingTest
-  @override
-  test_checkFinalConditions_shadowsInSubClass_notSubClass() =>
-      super.test_checkFinalConditions_shadowsInSubClass_notSubClass();
-
-  @failingTest
-  @override
-  test_createChange_ClassElement() => super.test_createChange_ClassElement();
-
-  @failingTest
-  @override
-  test_createChange_ClassElement_invocation() =>
-      super.test_createChange_ClassElement_invocation();
-
-  @failingTest
-  @override
-  test_createChange_ClassElement_parameterTypeNested() =>
-      super.test_createChange_ClassElement_parameterTypeNested();
-
-  @failingTest
-  @override
-  test_createChange_ClassElement_typeAlias() =>
-      super.test_createChange_ClassElement_typeAlias();
-
-  @failingTest
-  @override
-  test_createChange_FunctionElement() =>
-      super.test_createChange_FunctionElement();
-
-  @failingTest
-  @override
-  test_createChange_FunctionElement_imported() =>
-      super.test_createChange_FunctionElement_imported();
-
-  @failingTest
-  @override
-  test_createChange_FunctionTypeAliasElement() =>
-      super.test_createChange_FunctionTypeAliasElement();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_getter_declaration() =>
-      super.test_createChange_PropertyAccessorElement_getter_declaration();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_getter_usage() =>
-      super.test_createChange_PropertyAccessorElement_getter_usage();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_mix() =>
-      super.test_createChange_PropertyAccessorElement_mix();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_setter_declaration() =>
-      super.test_createChange_PropertyAccessorElement_setter_declaration();
-
-  @failingTest
-  @override
-  test_createChange_PropertyAccessorElement_setter_usage() =>
-      super.test_createChange_PropertyAccessorElement_setter_usage();
-
-  @failingTest
-  @override
-  test_createChange_TopLevelVariableElement_field() =>
-      super.test_createChange_TopLevelVariableElement_field();
-
-  @failingTest
-  @override
-  test_createChange_TopLevelVariableElement_getter() =>
-      super.test_createChange_TopLevelVariableElement_getter();
-
-  @failingTest
-  @override
-  test_createChange_TopLevelVariableElement_mix() =>
-      super.test_createChange_TopLevelVariableElement_mix();
-
-  @failingTest
-  @override
-  test_createChange_TopLevelVariableElement_setter() =>
-      super.test_createChange_TopLevelVariableElement_setter();
 }
diff --git a/pkg/analysis_server/test/services/search/hierarchy_test.dart b/pkg/analysis_server/test/services/search/hierarchy_test.dart
index 9970bed..b36529c 100644
--- a/pkg/analysis_server/test/services/search/hierarchy_test.dart
+++ b/pkg/analysis_server/test/services/search/hierarchy_test.dart
@@ -446,7 +446,7 @@
     }
   }
 
-  Future<Null> _indexTestUnit(String code) async {
+  Future<void> _indexTestUnit(String code) async {
     await resolveTestUnit(code);
   }
 }
@@ -455,33 +455,4 @@
 class HierarchyTest_UseCFE extends HierarchyTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_getHierarchyMembers_fields() => super.test_getHierarchyMembers_fields();
-
-  @failingTest
-  @override
-  test_getHierarchyMembers_methods() =>
-      super.test_getHierarchyMembers_methods();
-
-  @failingTest
-  @override
-  test_getHierarchyMembers_withInterfaces() =>
-      super.test_getHierarchyMembers_withInterfaces();
-
-  @failingTest
-  @override
-  test_getHierarchyNamedParameters() =>
-      super.test_getHierarchyNamedParameters();
-
-  @failingTest
-  @override
-  test_getHierarchyNamedParameters_invalid_missing() =>
-      super.test_getHierarchyNamedParameters_invalid_missing();
-
-  @failingTest
-  @override
-  test_getHierarchyNamedParameters_invalid_notNamed() =>
-      super.test_getHierarchyNamedParameters_invalid_notNamed();
 }
diff --git a/pkg/analysis_server/test/services/search/search_engine_test.dart b/pkg/analysis_server/test/services/search/search_engine_test.dart
index 45fbb9e..bc180ba 100644
--- a/pkg/analysis_server/test/services/search/search_engine_test.dart
+++ b/pkg/analysis_server/test/services/search/search_engine_test.dart
@@ -487,15 +487,6 @@
 
   @failingTest
   @override
-  test_searchAllSubtypes() => super.test_searchAllSubtypes();
-
-  @failingTest
-  @override
-  test_searchAllSubtypes_acrossDrivers() =>
-      super.test_searchAllSubtypes_acrossDrivers();
-
-  @failingTest
-  @override
   test_searchMemberReferences() =>
       callFailingTest(super.test_searchMemberReferences());
 
@@ -506,6 +497,7 @@
   @failingTest
   @override
   test_searchReferences_discover_owned() {
-    return callFailingTest(super.test_searchReferences_discover_owned);
+    fail('Timeout');
+//    return callFailingTest(super.test_searchReferences_discover_owned);
   }
 }
diff --git a/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart b/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart
index 2c9e9dd..f63237e 100644
--- a/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/closingLabels_computer_test.dart
@@ -412,8 +412,4 @@
 class ClosingLabelsComputerTest_UseCFE extends ClosingLabelsComputerTest {
   @override
   bool get useCFE => true;
-
-  @failingTest
-  @override
-  test_knownBadCode1() => super.test_knownBadCode1();
 }
diff --git a/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart b/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart
index 939f15b..631177c 100644
--- a/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/import_elements_computer_test.dart
@@ -38,7 +38,7 @@
     expect(sourceFileEdit, isNull);
   }
 
-  Future<Null> computeChanges(List<ImportedElements> importedElements) async {
+  Future<void> computeChanges(List<ImportedElements> importedElements) async {
     SourceChange change = await computer.createEdits(importedElements);
     expect(change, isNotNull);
     List<SourceFileEdit> edits = change.edits;
@@ -50,7 +50,7 @@
     }
   }
 
-  Future<Null> createBuilder(String content) async {
+  Future<void> createBuilder(String content) async {
     originalContent = content;
     newFile(path, content: content);
     AnalysisResult result = await driver.getResult(path);
diff --git a/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart b/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
index 2448c48..6837470 100644
--- a/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
+++ b/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
@@ -672,10 +672,10 @@
    * content that implements a minimal plugin if the contents are not given. The
    * [test] function will be passed the path of the directory that was created.
    */
-  Future<Null> withPlugin(
+  Future<void> withPlugin(
       {String content,
       String pluginName,
-      Future<Null> test(String pluginPath)}) async {
+      Future<void> test(String pluginPath)}) async {
     io.Directory tempDirectory =
         io.Directory.systemTemp.createTempSync(pluginName ?? 'test_plugin');
     try {
@@ -720,10 +720,10 @@
    * content that implements a minimal plugin if the contents are not given. The
    * [test] function will be passed the path of the directory that was created.
    */
-  Future<Null> withPubspecPlugin(
+  Future<void> withPubspecPlugin(
       {String content,
       String pluginName,
-      Future<Null> test(String pluginPath)}) async {
+      Future<void> test(String pluginPath)}) async {
     io.Directory tempDirectory =
         io.Directory.systemTemp.createTempSync(pluginName ?? 'test_plugin');
     try {
diff --git a/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart b/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
index 4798194..6029159 100644
--- a/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
+++ b/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
@@ -148,7 +148,7 @@
 
   Stream<AnalysisResult> get results => _resultController.stream;
 
-  Future<Null> computeResult(String uri) {
+  Future<void> computeResult(String uri) {
     FileState file = fsState.getFileForUri(Uri.parse(uri));
     AnalysisResult result = new AnalysisResult(this, null, file.path, null,
         true, null, null, false, null, null, null, null);
@@ -165,7 +165,7 @@
   List<ContextRoot> removedContextRoots = <ContextRoot>[];
 
   @override
-  Future<Null> addPluginToContextRoot(
+  Future<void> addPluginToContextRoot(
       ContextRoot contextRoot, String path) async {
     addedContextRoots.add(contextRoot);
     return null;
diff --git a/pkg/analysis_server/test/stress/completion/completion.dart b/pkg/analysis_server/test/stress/completion/completion.dart
index 9581943..a16fb14 100644
--- a/pkg/analysis_server/test/stress/completion/completion.dart
+++ b/pkg/analysis_server/test/stress/completion/completion.dart
@@ -21,11 +21,12 @@
     CompletionRunner runner = new CompletionRunner(
         output: stdout,
         printMissing: result['missing'],
+        printQuality: result['quality'],
         timing: result['timing'],
         useCFE: result['use-cfe'],
         verbose: result['verbose']);
     await runner.runAll(analysisRoot);
-    stdout.flush();
+    await stdout.flush();
   }
 }
 
@@ -46,6 +47,11 @@
     negatable: false,
   );
   parser.addFlag(
+    'quality',
+    help: 'Report on the quality of the sort order',
+    negatable: false,
+  );
+  parser.addFlag(
     'timing',
     help: 'Report timing information',
     negatable: false,
diff --git a/pkg/analysis_server/test/stress/completion/completion_runner.dart b/pkg/analysis_server/test/stress/completion/completion_runner.dart
index 2f49a24..886a07d 100644
--- a/pkg/analysis_server/test/stress/completion/completion_runner.dart
+++ b/pkg/analysis_server/test/stress/completion/completion_runner.dart
@@ -35,6 +35,12 @@
   final bool printMissing;
 
   /**
+   * A flag indicating whether to produce output about the quality of the sort
+   * order.
+   */
+  final bool printQuality;
+
+  /**
    * A flag indicating whether to produce timing information.
    */
   final bool timing;
@@ -61,11 +67,13 @@
   CompletionRunner(
       {StringSink output,
       bool printMissing,
+      bool printQuality,
       bool timing,
       bool useCFE,
       bool verbose})
       : this.output = output ?? new NullStringSink(),
         this.printMissing = printMissing ?? false,
+        this.printQuality = printQuality ?? false,
         this.timing = timing ?? false,
         this.useCFE = useCFE ?? false,
         this.verbose = verbose ?? false;
@@ -87,7 +95,10 @@
 
     int fileCount = 0;
     int identifierCount = 0;
+    int expectedCount = 0;
     int missingCount = 0;
+    List<int> indexCount = new List.filled(20, 0);
+    List<int> filteredIndexCount = new List.filled(20, 0);
 
     // Consider getting individual timings so that we can also report the
     // longest and shortest times, or even a distribution.
@@ -95,6 +106,9 @@
 
     for (AnalysisContext context in collection.contexts) {
       for (String path in context.contextRoot.analyzedFiles()) {
+        if (!path.endsWith('.dart')) {
+          continue;
+        }
         fileCount++;
         output.write('.');
         ResolveResult result =
@@ -123,7 +137,10 @@
 
           if (!identifier.inDeclarationContext() &&
               !_isNamedExpressionName(identifier)) {
-            if (!_hasSuggestion(suggestions, identifier.name)) {
+            expectedCount++;
+            suggestions = _sort(suggestions.toList());
+            int index = _indexOf(suggestions, identifier.name);
+            if (index < 0) {
               missingCount++;
               if (printMissing) {
                 CharacterLocation location = lineInfo.getLocation(offset);
@@ -133,6 +150,17 @@
                   _printSuggestions(suggestions);
                 }
               }
+            } else if (printQuality) {
+              if (index < indexCount.length) {
+                indexCount[index]++;
+              }
+              List<CompletionSuggestion> filteredSuggestions =
+                  _filterBy(suggestions, identifier.name.substring(0, 1));
+              int filteredIndex =
+                  _indexOf(filteredSuggestions, identifier.name);
+              if (filteredIndex < filteredIndexCount.length) {
+                filteredIndexCount[filteredIndex]++;
+              }
             }
           }
         }
@@ -145,12 +173,53 @@
     if (printMissing) {
       output.writeln();
     }
-    if (identifierCount == 0) {
-      output.writeln('No identifiers found in $fileCount files');
-    } else {
-      int percent = (missingCount * 100 / identifierCount).round();
-      output.writeln('$percent% missing suggestions '
-          '($missingCount of $identifierCount in $fileCount files)');
+    output.writeln('Found $identifierCount identifiers in $fileCount files');
+    if (expectedCount > 0) {
+      output.writeln('  $expectedCount were expected to code complete');
+      if (printQuality) {
+        int percent = (missingCount * 100 / expectedCount).round();
+        output.writeln('  $percent% of which were missing suggestions '
+            '($missingCount)');
+
+        int foundCount = expectedCount - missingCount;
+
+        void printCount(int count) {
+          if (count < 10) {
+            output.write('      $count  ');
+          } else if (count < 100) {
+            output.write('     $count  ');
+          } else if (count < 1000) {
+            output.write('    $count  ');
+          } else if (count < 10000) {
+            output.write('   $count  ');
+          } else {
+            output.write('  $count  ');
+          }
+          int percent = (count * 100 / foundCount).floor();
+          for (int j = 0; j < percent; j++) {
+            output.write('-');
+          }
+          output.writeln();
+        }
+
+        void _printCounts(List<int> counts) {
+          int nearTopCount = 0;
+          for (int i = 0; i < counts.length; i++) {
+            int count = counts[i];
+            printCount(count);
+            nearTopCount += count;
+          }
+          printCount(foundCount - nearTopCount);
+        }
+
+        output.writeln();
+        output.writeln('By position in the list');
+        _printCounts(indexCount);
+        output.writeln();
+        output.writeln('By position in the list (filtered by first character)');
+        _printCounts(filteredIndexCount);
+        output.writeln();
+      }
     }
     if (timing && identifierCount > 0) {
       int time = timer.elapsedMilliseconds;
@@ -160,18 +229,11 @@
     }
   }
 
-  /**
-   * Return `true` if the given list of [suggestions] includes a suggestion for
-   * the given [identifier].
-   */
-  bool _hasSuggestion(
-      List<CompletionSuggestion> suggestions, String identifier) {
-    for (CompletionSuggestion suggestion in suggestions) {
-      if (suggestion.completion == identifier) {
-        return true;
-      }
-    }
-    return false;
+  List<CompletionSuggestion> _filterBy(
+      List<CompletionSuggestion> suggestions, String pattern) {
+    return suggestions
+        .where((suggestion) => suggestion.completion.startsWith(pattern))
+        .toList();
   }
 
   /**
@@ -185,6 +247,19 @@
   }
 
   /**
+   * If the given list of [suggestions] includes a suggestion for the given
+   * [identifier], return the index of the suggestion. Otherwise, return `-1`.
+   */
+  int _indexOf(List<CompletionSuggestion> suggestions, String identifier) {
+    for (int i = 0; i < suggestions.length; i++) {
+      if (suggestions[i].completion == identifier) {
+        return i;
+      }
+    }
+    return -1;
+  }
+
+  /**
    * Return `true` if the given [identifier] is being used as the name of a
    * named expression.
    */
@@ -206,6 +281,11 @@
       output.writeln('    ${suggestion.completion}');
     }
   }
+
+  List<CompletionSuggestion> _sort(List<CompletionSuggestion> suggestions) {
+    suggestions.sort((first, second) => second.relevance - first.relevance);
+    return suggestions;
+  }
 }
 
 /**
diff --git a/pkg/analysis_server/test/stress/replay/replay.dart b/pkg/analysis_server/test/stress/replay/replay.dart
index 36ef8fd..d713f0a 100644
--- a/pkg/analysis_server/test/stress/replay/replay.dart
+++ b/pkg/analysis_server/test/stress/replay/replay.dart
@@ -29,7 +29,7 @@
 /**
  * Run the simulation based on the given command-line [arguments].
  */
-Future<Null> main(List<String> arguments) async {
+Future<void> main(List<String> arguments) async {
   Driver driver = new Driver();
   await driver.run(arguments);
 }
@@ -135,14 +135,14 @@
   /**
    * Allow the output from the server to be read and processed.
    */
-  Future<Null> readServerOutput() async {
+  Future<void> readServerOutput() async {
     await new Future.delayed(new Duration(milliseconds: 2));
   }
 
   /**
    * Run the simulation based on the given command-line arguments ([args]).
    */
-  Future<Null> run(List<String> args) async {
+  Future<void> run(List<String> args) async {
     //
     // Process the command-line arguments.
     //
@@ -358,7 +358,7 @@
   /**
    * Replay the changes in each commit.
    */
-  Future<Null> _replayChanges() async {
+  Future<void> _replayChanges() async {
     //
     // Get the revision history of the repo.
     //
@@ -428,7 +428,7 @@
    * Replay the changes between two commits, as represented by the given
    * [commitDelta].
    */
-  Future<Null> _replayDiff(CommitDelta commitDelta) async {
+  Future<void> _replayDiff(CommitDelta commitDelta) async {
     List<FileEdit> editList = <FileEdit>[];
     for (DiffRecord record in commitDelta.diffRecords) {
       FileEdit edit = new FileEdit(overlayStyle, record);
@@ -475,7 +475,7 @@
   /**
    * Run the simulation by starting up a server and sending it requests.
    */
-  Future<Null> _runSimulation() async {
+  Future<void> _runSimulation() async {
     server = new Server(logger: logger);
     Stopwatch stopwatch = new Stopwatch();
     statistics.stopwatch = stopwatch;
diff --git a/pkg/analysis_server/test/stress/utilities/server.dart b/pkg/analysis_server/test/stress/utilities/server.dart
index 0beb104..ccd2ac5 100644
--- a/pkg/analysis_server/test/stress/utilities/server.dart
+++ b/pkg/analysis_server/test/stress/utilities/server.dart
@@ -211,13 +211,13 @@
    * The completer that will be completed the next time a 'server.status'
    * notification is received from the server with 'analyzing' set to false.
    */
-  Completer<Null> _analysisFinishedCompleter;
+  Completer<void> _analysisFinishedCompleter;
 
   /**
    * The completer that will be completed the next time a 'server.connected'
    * notification is received from the server.
    */
-  Completer<Null> _serverConnectedCompleter;
+  Completer<void> _serverConnectedCompleter;
 
   /**
    * A table mapping the ids of requests that have been sent to the server to
@@ -251,7 +251,7 @@
    */
   Future get analysisFinished {
     if (_analysisFinishedCompleter == null) {
-      _analysisFinishedCompleter = new Completer();
+      _analysisFinishedCompleter = new Completer<void>();
     }
     return _analysisFinishedCompleter.future;
   }
@@ -619,7 +619,7 @@
    * If [useAnalysisHighlight2] is `true`, the server will use the new highlight
    * APIs.
    */
-  Future<Null> start(
+  Future<void> start(
       {bool checked: true,
       int diagnosticPort,
       bool profileServer: false,
@@ -680,7 +680,7 @@
       }
     });
     _listenToOutput();
-    _serverConnectedCompleter = new Completer();
+    _serverConnectedCompleter = new Completer<void>();
     return _serverConnectedCompleter.future;
   }
 
diff --git a/pkg/analysis_server/tool/instrumentation/server.dart b/pkg/analysis_server/tool/instrumentation/server.dart
index 558cac1..bfeb7cc 100644
--- a/pkg/analysis_server/tool/instrumentation/server.dart
+++ b/pkg/analysis_server/tool/instrumentation/server.dart
@@ -152,7 +152,7 @@
   /**
    * Handle a POST [request] received by the HTTP server.
    */
-  Future<Null> _handlePostRequest(HttpRequest request) async {
+  Future<void> _handlePostRequest(HttpRequest request) async {
     _returnUnknownRequest(request);
   }
 
@@ -181,8 +181,8 @@
     response.statusCode = HttpStatus.notFound;
     response.headers.contentType =
         new ContentType("text", "html", charset: "utf-8");
-    response.write('<html><head></head><body><h3>Page not found: "${request.uri
-            .path}".</h3></body></html>');
+    response.write(
+        '<html><head></head><body><h3>Page not found: "${request.uri.path}".</h3></body></html>');
     response.close();
   }
 
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 2471392..34ee3c9 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -651,6 +651,12 @@
 
   /**
    * Return `true` if this element has an annotation of the form
+   * `@visibleForTemplate`.
+   */
+  bool get hasVisibleForTemplate;
+
+  /**
+   * Return `true` if this element has an annotation of the form
    * `@visibleForTesting`.
    */
   bool get hasVisibleForTesting;
@@ -950,6 +956,12 @@
 
   /**
    * Return `true` if this annotation marks the associated member as being
+   * visible for template files.
+   */
+  bool get isVisibleForTemplate;
+
+  /**
+   * Return `true` if this annotation marks the associated member as being
    * visible for testing.
    */
   bool get isVisibleForTesting;
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index 831f9b4..4cfcde6 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -51,6 +51,7 @@
   AnalysisOptionsWarningCode.UNSUPPORTED_VALUE,
   AnalysisOptionsWarningCode.SPEC_MODE_REMOVED,
   AnalysisOptionsHintCode.DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME,
+  AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
   AnalysisOptionsHintCode.STRONG_MODE_SETTING_DEPRECATED,
   CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
   CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -305,6 +306,7 @@
   HintCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETER_BOUND,
   HintCode.INVALID_REQUIRED_PARAM,
   HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
+  HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER,
   HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
   HintCode.IS_DOUBLE,
   HintCode.IS_INT,
diff --git a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
index 2e2258c..43fa83a 100644
--- a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
+++ b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
@@ -111,7 +111,7 @@
   static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITH_LEGAL_VALUE =
       const AnalysisOptionsWarningCode(
           'UNSUPPORTED_OPTION_WITH_LEGAL_VALUE',
-          "The option '{1}' isn't supported by '{0}'."
+          "The option '{1}' isn't supported by '{0}'. "
           "Try using the only supported option: '{2}'.");
 
   /**
@@ -191,6 +191,14 @@
           " consider renaming it to analysis_options.yaml.");
 
   /**
+   * An error code indicating that the enablePreviewDart2 setting is deprecated.
+   */
+  static const AnalysisOptionsHintCode PREVIEW_DART_2_SETTING_DEPRECATED =
+      const AnalysisOptionsHintCode('PREVIEW_DART_2_SETTING_DEPRECATED',
+          "The 'enablePreviewDart2' setting is deprecated.",
+          correction: "It is no longer necessary to explicitly enable Dart 2.");
+
+  /**
    * An error code indicating that strong-mode: true is deprecated.
    */
   static const AnalysisOptionsHintCode STRONG_MODE_SETTING_DEPRECATED =
diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index dadcca6..9c4118d 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -133,7 +133,7 @@
   /**
    * Whether to enable the Dart 2.0 preview.
    */
-  bool previewDart2 = false;
+  bool get previewDart2 => true;
 
   /**
    * Whether to enable the Dart 2.0 Common Front End implementation.
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index af5e61f..9472a8d 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -313,7 +313,6 @@
     this._options.lintRules = options.lintRules;
     this._options.preserveComments = options.preserveComments;
     this._options.useFastaParser = options.useFastaParser;
-    this._options.previewDart2 = options.previewDart2;
     this._options.trackCacheDependencies = options.trackCacheDependencies;
     this._options.disableCacheFlushing = options.disableCacheFlushing;
     this._options.patchPaths = options.patchPaths;
@@ -323,6 +322,7 @@
       this._options.implicitCasts = options.implicitCasts;
       this._options.nonnullableTypes = options.nonnullableTypes;
       this._options.implicitDynamic = options.implicitDynamic;
+      this._options.useCFE = options.useCFE;
     }
     if (needsRecompute) {
       for (WorkManager workManager in workManagers) {
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index 2d7cfdc..d7cab63 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -638,7 +638,7 @@
 
     bool useFasta = analysisOptions.useFastaParser;
     Parser parser = new Parser(source, errorListener, useFasta: useFasta);
-    parser.enableOptionalNewAndConst = analysisOptions.previewDart2;
+    parser.enableOptionalNewAndConst = true;
     parser.parseGenericMethodComments = true;
     CompilationUnit unit = parser.parseCompilationUnit(token);
     unit.lineInfo = lineInfo;
diff --git a/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart b/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart
index 5208c15..fdf172c 100644
--- a/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/kernel_context.dart
@@ -16,6 +16,7 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/kernel/resynthesize.dart';
 import 'package:front_end/src/base/performance_logger.dart';
+import 'package:front_end/src/base/resolve_relative_uri.dart';
 import 'package:kernel/ast.dart' as kernel;
 import 'package:kernel/text/ast_to_text.dart' as kernel;
 
@@ -23,8 +24,6 @@
  * Support for resynthesizing element model from Kernel.
  */
 class KernelContext {
-  static const DEBUG = false;
-
   /**
    * The [AnalysisContext] which is used to do the analysis.
    */
@@ -67,6 +66,50 @@
 //    return store.unlinkedMap[uriStr]?.isPartOf == false;
   }
 
+  static KernelResynthesizer buildResynthesizer(
+      FileSystemState fsState,
+      LibraryCompilationResult libraryResult,
+      AnalysisContextImpl analysisContext) {
+    // Remember Kernel libraries produced by the compiler.
+    // There might be more libraries than we actually need.
+    // This is probably OK, because we consume them lazily.
+    var fileInfoMap = <String, KernelFileInfo>{};
+
+    void addFileInfo(FileState file, {kernel.Library library}) {
+      String uriStr = file.uriStr;
+      if (!fileInfoMap.containsKey(uriStr)) {
+        fileInfoMap[file.uriStr] = new KernelFileInfo(
+            file?.exists ?? false,
+            file?.content?.length ?? 0,
+            file?.lineInfo ?? new LineInfo([0]),
+            library);
+      }
+    }
+
+    bool coreFound = false;
+    for (var library in libraryResult.component.libraries) {
+      String uriStr = library.importUri.toString();
+      if (uriStr == 'dart:core') {
+        coreFound = true;
+      }
+      FileState file = fsState.getFileForUri(library.importUri);
+      addFileInfo(file, library: library);
+      for (var part in library.parts) {
+        var relativePartUri = Uri.parse(part.partUri);
+        var partUri = resolveRelativeUri(library.importUri, relativePartUri);
+        FileState partFile = fsState.getFileForUri(partUri);
+        addFileInfo(partFile);
+      }
+    }
+    if (!coreFound) {
+      throw new StateError('No dart:core library found (dartbug.com/33686)');
+    }
+
+    // Create the resynthesizer bound to the analysis context.
+    var resynthesizer = new KernelResynthesizer(analysisContext, fileInfoMap);
+    return resynthesizer;
+  }
+
   /**
    * Create a [KernelContext] which is prepared to analyze [targetLibrary].
    */
@@ -81,40 +124,10 @@
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     return logger.runAsync('Create kernel context', () async {
-      // TODO(brianwilkerson) Determine whether this await is necessary.
-      await null;
       Uri targetUri = targetLibrary.uri;
-      LibraryCompilationResult compilationResult =
+      LibraryCompilationResult libraryResult =
           await compiler.compile(targetUri);
 
-      // Remember Kernel libraries produced by the compiler.
-      // There might be more libraries than we actually need.
-      // This is probably OK, because we consume them lazily.
-      var lineInfoMap = <String, LineInfo>{};
-      var libraryMap = <String, kernel.Library>{};
-      var libraryExistMap = <String, bool>{};
-      bool coreFound = false;
-      for (var library in compilationResult.component.libraries) {
-        String uriStr = library.importUri.toString();
-        if (uriStr == 'dart:core') {
-          coreFound = true;
-        }
-        FileState file = fsState.getFileForUri(library.importUri);
-        lineInfoMap[uriStr] = file?.lineInfo ?? new LineInfo([0]);
-        libraryMap[uriStr] = library;
-        libraryExistMap[uriStr] = file?.exists ?? false;
-      }
-      if (!coreFound) {
-        throw new StateError('No dart:core library found (dartbug.com/33686)');
-      }
-
-      if (DEBUG) {
-        print('----------- ${targetLibrary.uriStr}');
-        var libraryKernel = libraryMap[targetLibrary.uriStr];
-        print(_getLibraryText(libraryKernel));
-        print('--------------------------------------');
-      }
-
       // Create and configure a new context.
       AnalysisContextImpl analysisContext =
           AnalysisEngine.instance.createAnalysisContext();
@@ -124,20 +137,11 @@
       analysisContext.sourceFactory = sourceFactory.clone();
       analysisContext.contentCache = new _ContentCacheWrapper(fsState);
 
-      // Create the resynthesizer bound to the analysis context.
-      var resynthesizer = new KernelResynthesizer(
-          analysisContext, lineInfoMap, libraryMap, libraryExistMap);
-
+      KernelResynthesizer resynthesizer =
+          buildResynthesizer(fsState, libraryResult, analysisContext);
       return new KernelContext._(analysisContext, resynthesizer);
     });
   }
-
-  static String _getLibraryText(kernel.Library library) {
-    StringBuffer buffer = new StringBuffer();
-    new kernel.Printer(buffer, syntheticNames: new kernel.NameSystem())
-        .writeLibraryFile(library);
-    return buffer.toString();
-  }
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/dart/analysis/kernel_metadata.dart b/pkg/analyzer/lib/src/dart/analysis/kernel_metadata.dart
index 3750ad8..ea14d1d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/kernel_metadata.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/kernel_metadata.dart
@@ -11,6 +11,12 @@
 
 /// Additional information that Analyzer needs for nodes.
 class AnalyzerMetadata {
+  /// The offset of the beginning of the node code.
+  int codeOffset = -1;
+
+  /// The length of the node code.
+  int codeLength = 0;
+
   /// If the node is a named constructor, the offset of the name.
   /// Otherwise `-1`.
   int constructorNameOffset = -1;
@@ -40,6 +46,13 @@
       new AnalyzerMetadataRepository();
 
   @override
+  void setCodeStartEnd(kernel.TreeNode node, int start, int end) {
+    var metadata = repository._forWriting(node);
+    metadata.codeOffset = start;
+    metadata.codeLength = end - start;
+  }
+
+  @override
   void setConstructorNameOffset(kernel.Member node, Object name) {
     if (name is QualifiedName) {
       var metadata = repository._forWriting(node);
@@ -144,6 +157,8 @@
   AnalyzerMetadata readFromBinary(
       kernel.Node node, kernel.BinarySource source) {
     return new AnalyzerMetadata()
+      ..codeOffset = _readOffset(source)
+      ..codeLength = _readLength(source)
       ..constructorNameOffset = _readOffset(source)
       ..documentationComment = _readOptionalString(source)
       ..importPrefixOffset = _readOffset(source);
@@ -152,6 +167,8 @@
   @override
   void writeToBinary(
       AnalyzerMetadata metadata, kernel.Node node, kernel.BinarySink sink) {
+    _writeOffset(sink, metadata.codeOffset);
+    _writeLength(sink, metadata.codeLength);
     _writeOffset(sink, metadata.constructorNameOffset);
     _writeOptionalString(sink, metadata.documentationComment);
     _writeOffset(sink, metadata.importPrefixOffset);
@@ -162,6 +179,10 @@
     return mapping[node] ??= new AnalyzerMetadata();
   }
 
+  int _readLength(kernel.BinarySource source) {
+    return source.readUint32();
+  }
+
   int _readOffset(kernel.BinarySource source) {
     return source.readUint32() - 1;
   }
@@ -176,6 +197,12 @@
     }
   }
 
+  /// The [length] value must be `>= 0`.
+  void _writeLength(kernel.BinarySink sink, int length) {
+    assert(length >= 0);
+    sink.writeUInt32(length);
+  }
+
   /// The [offset] value must be `>= -1`.
   void _writeOffset(kernel.BinarySink sink, int offset) {
     assert(offset >= -1);
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 5fad007..487f11f 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -700,10 +700,8 @@
 
     new DeclarationResolver().resolve(unit, unitElement);
 
-    if (_libraryElement.context.analysisOptions.previewDart2) {
-      unit.accept(new AstRewriteVisitor(_context.typeSystem, _libraryElement,
-          source, _typeProvider, AnalysisErrorListener.NULL_LISTENER));
-    }
+    unit.accept(new AstRewriteVisitor(_context.typeSystem, _libraryElement,
+        source, _typeProvider, AnalysisErrorListener.NULL_LISTENER));
 
     // TODO(scheglov) remove EnumMemberBuilder class
 
diff --git a/pkg/analyzer/lib/src/dart/constant/utilities.dart b/pkg/analyzer/lib/src/dart/constant/utilities.dart
index bc05150..9bcc88bd 100644
--- a/pkg/analyzer/lib/src/dart/constant/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/constant/utilities.dart
@@ -39,9 +39,7 @@
  * constants to be evaluated.
  */
 class ConstantAstCloner extends AstCloner {
-  final bool previewDart2;
-
-  ConstantAstCloner(this.previewDart2) : super(true);
+  ConstantAstCloner() : super(true);
 
   @override
   Annotation visitAnnotation(Annotation node) {
@@ -69,7 +67,7 @@
       InstanceCreationExpression node) {
     InstanceCreationExpression expression =
         super.visitInstanceCreationExpression(node);
-    if (previewDart2 && node.keyword == null) {
+    if (node.keyword == null) {
       if (node.isConst) {
         expression.keyword = new KeywordToken(Keyword.CONST, node.offset);
       } else {
@@ -84,7 +82,7 @@
   ListLiteral visitListLiteral(ListLiteral node) {
     ListLiteral literal = super.visitListLiteral(node);
     literal.staticType = node.staticType;
-    if (previewDart2 && node.constKeyword == null && node.isConst) {
+    if (node.constKeyword == null && node.isConst) {
       literal.constKeyword = new KeywordToken(Keyword.CONST, node.offset);
     }
     return literal;
@@ -94,7 +92,7 @@
   MapLiteral visitMapLiteral(MapLiteral node) {
     MapLiteral literal = super.visitMapLiteral(node);
     literal.staticType = node.staticType;
-    if (previewDart2 && node.constKeyword == null && node.isConst) {
+    if (node.constKeyword == null && node.isConst) {
       literal.constKeyword = new KeywordToken(Keyword.CONST, node.offset);
     }
     return literal;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 792a447..9572717 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -575,6 +575,10 @@
 
   @override
   int get codeLength {
+    if (_kernel != null) {
+      var metadata = AnalyzerMetadata.forNode(_kernel);
+      return metadata?.codeLength;
+    }
     if (_unlinkedClass != null) {
       return _unlinkedClass.codeRange?.length;
     }
@@ -583,6 +587,10 @@
 
   @override
   int get codeOffset {
+    if (_kernel != null) {
+      var metadata = AnalyzerMetadata.forNode(_kernel);
+      return metadata?.codeOffset;
+    }
     if (_unlinkedClass != null) {
       return _unlinkedClass.codeRange?.offset;
     }
@@ -2907,6 +2915,12 @@
   static String _MUST_CALL_SUPER_VARIABLE_NAME = "mustCallSuper";
 
   /**
+   * The name of `angular.meta` library, used to define angular analysis
+   * annotations.
+   */
+  static String _NG_META_LIB_NAME = "angular.meta";
+
+  /**
    * The name of the top-level variable used to mark a method as being expected
    * to override an inherited method.
    */
@@ -2936,6 +2950,10 @@
   static String _REQUIRED_VARIABLE_NAME = "required";
 
   /// The name of the top-level variable used to mark a method as being
+  /// visible for templates.
+  static String _VISIBLE_FOR_TEMPLATE_VARIABLE_NAME = "visibleForTemplate";
+
+  /// The name of the top-level variable used to mark a method as being
   /// visible for testing.
   static String _VISIBLE_FOR_TESTING_VARIABLE_NAME = "visibleForTesting";
 
@@ -3066,6 +3084,12 @@
           element.library?.name == _META_LIB_NAME;
 
   @override
+  bool get isVisibleForTemplate =>
+      element is PropertyAccessorElement &&
+      element.name == _VISIBLE_FOR_TEMPLATE_VARIABLE_NAME &&
+      element.library?.name == _NG_META_LIB_NAME;
+
+  @override
   bool get isVisibleForTesting =>
       element is PropertyAccessorElement &&
       element.name == _VISIBLE_FOR_TESTING_VARIABLE_NAME &&
@@ -3282,6 +3306,10 @@
       metadata.any((ElementAnnotation annotation) => annotation.isRequired);
 
   @override
+  bool get hasVisibleForTemplate => metadata
+      .any((ElementAnnotation annotation) => annotation.isVisibleForTemplate);
+
+  @override
   bool get hasVisibleForTesting => metadata
       .any((ElementAnnotation annotation) => annotation.isVisibleForTesting);
 
@@ -3382,6 +3410,9 @@
     setModifier(Modifier.SYNTHETIC, isSynthetic);
   }
 
+  bool get isVisibleForTemplate => metadata
+      .any((ElementAnnotation annotation) => annotation.isVisibleForTemplate);
+
   @override
   bool get isVisibleForTesting => metadata
       .any((ElementAnnotation annotation) => annotation.isVisibleForTesting);
@@ -4205,6 +4236,10 @@
 
   @override
   int get codeLength {
+    if (_kernel != null) {
+      var metadata = AnalyzerMetadata.forNode(_kernel);
+      return metadata?.codeLength;
+    }
     if (serializedExecutable != null) {
       return serializedExecutable.codeRange?.length;
     }
@@ -4213,6 +4248,10 @@
 
   @override
   int get codeOffset {
+    if (_kernel != null) {
+      var metadata = AnalyzerMetadata.forNode(_kernel);
+      return metadata?.codeOffset;
+    }
     if (serializedExecutable != null) {
       return serializedExecutable.codeRange?.offset;
     }
@@ -7666,6 +7705,9 @@
   bool get hasRequired => false;
 
   @override
+  bool get hasVisibleForTemplate => false;
+
+  @override
   bool get hasVisibleForTesting => false;
 
   @override
@@ -7704,6 +7746,8 @@
   @override
   bool get isSynthetic => true;
 
+  bool get isVisibleForTemplate => false;
+
   @override
   bool get isVisibleForTesting => false;
 
diff --git a/pkg/analyzer/lib/src/dart/element/handle.dart b/pkg/analyzer/lib/src/dart/element/handle.dart
index cdf1005..6710524 100644
--- a/pkg/analyzer/lib/src/dart/element/handle.dart
+++ b/pkg/analyzer/lib/src/dart/element/handle.dart
@@ -381,6 +381,9 @@
   bool get hasRequired => actualElement.hasRequired;
 
   @override
+  bool get hasVisibleForTemplate => actualElement.hasVisibleForTemplate;
+
+  @override
   bool get hasVisibleForTesting => actualElement.hasVisibleForTesting;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 598c122..0599412 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -419,6 +419,9 @@
   bool get hasRequired => _baseElement.hasRequired;
 
   @override
+  bool get hasVisibleForTemplate => _baseElement.hasVisibleForTemplate;
+
+  @override
   bool get hasVisibleForTesting => _baseElement.hasVisibleForTesting;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/wrapped.dart b/pkg/analyzer/lib/src/dart/element/wrapped.dart
new file mode 100644
index 0000000..88291aa
--- /dev/null
+++ b/pkg/analyzer/lib/src/dart/element/wrapped.dart
@@ -0,0 +1,591 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/dart/ast/ast.dart' hide Directive;
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/resolver/scope.dart';
+import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
+import 'package:analyzer/src/generated/java_engine.dart';
+import 'package:analyzer/src/generated/source.dart';
+
+/// Implementation of [CompilationUnitElement] that wraps a
+/// [CompilationUnitElement] and defers all method calls to it.
+///
+/// This is intended to be used by the rare clients that must reimplement
+/// [CompilationUnitElement], so that they won't be broken if new methods are
+/// added.
+class WrappedCompilationUnitElement implements CompilationUnitElement {
+  final CompilationUnitElement wrappedUnit;
+
+  WrappedCompilationUnitElement(this.wrappedUnit);
+
+  @override
+  List<PropertyAccessorElement> get accessors => wrappedUnit.accessors;
+
+  @override
+  AnalysisContext get context => wrappedUnit.context;
+
+  @override
+  String get displayName => wrappedUnit.displayName;
+
+  @override
+  String get documentationComment => wrappedUnit.documentationComment;
+
+  @override
+  LibraryElement get enclosingElement => wrappedUnit.enclosingElement;
+
+  @override
+  List<ClassElement> get enums => wrappedUnit.enums;
+
+  @override
+  List<FunctionElement> get functions => wrappedUnit.functions;
+
+  @override
+  List<FunctionTypeAliasElement> get functionTypeAliases =>
+      wrappedUnit.functionTypeAliases;
+
+  @override
+  bool get hasAlwaysThrows => wrappedUnit.hasAlwaysThrows;
+
+  @override
+  bool get hasDeprecated => wrappedUnit.hasDeprecated;
+
+  @override
+  bool get hasFactory => wrappedUnit.hasFactory;
+
+  @override
+  bool get hasIsTest => wrappedUnit.hasIsTest;
+
+  @override
+  bool get hasIsTestGroup => wrappedUnit.hasIsTestGroup;
+
+  @override
+  bool get hasJS => wrappedUnit.hasJS;
+
+  @override
+  bool get hasLoadLibraryFunction => wrappedUnit.hasLoadLibraryFunction;
+
+  @override
+  bool get hasOverride => wrappedUnit.hasOverride;
+
+  @override
+  bool get hasProtected => wrappedUnit.hasProtected;
+
+  @override
+  bool get hasRequired => wrappedUnit.hasRequired;
+
+  @override
+  bool get hasVisibleForTemplate => wrappedUnit.hasVisibleForTemplate;
+
+  @override
+  bool get hasVisibleForTesting => wrappedUnit.hasVisibleForTesting;
+
+  @override
+  int get id => wrappedUnit.id;
+
+  @override
+  bool get isAlwaysThrows => hasAlwaysThrows;
+
+  @override
+  bool get isDeprecated => hasDeprecated;
+
+  @override
+  bool get isFactory => hasFactory;
+
+  @override
+  bool get isJS => hasJS;
+
+  @override
+  bool get isOverride => hasOverride;
+
+  @override
+  bool get isPrivate => wrappedUnit.isPrivate;
+
+  @override
+  bool get isProtected => hasProtected;
+
+  @override
+  bool get isPublic => wrappedUnit.isPublic;
+
+  @override
+  bool get isRequired => hasRequired;
+
+  @override
+  bool get isSynthetic => wrappedUnit.isSynthetic;
+
+  @override
+  bool get isVisibleForTesting => hasVisibleForTesting;
+
+  @override
+  ElementKind get kind => wrappedUnit.kind;
+
+  @override
+  LibraryElement get library => wrappedUnit.library;
+
+  @override
+  Source get librarySource => wrappedUnit.librarySource;
+
+  @override
+  LineInfo get lineInfo => wrappedUnit.lineInfo;
+
+  @override
+  ElementLocation get location => wrappedUnit.location;
+
+  @override
+  List<ElementAnnotation> get metadata => wrappedUnit.metadata;
+
+  @override
+  String get name => wrappedUnit.name;
+
+  @override
+  int get nameLength => wrappedUnit.nameLength;
+
+  @override
+  int get nameOffset => wrappedUnit.nameOffset;
+
+  @override
+  Source get source => wrappedUnit.source;
+
+  @override
+  List<TopLevelVariableElement> get topLevelVariables =>
+      wrappedUnit.topLevelVariables;
+
+  @override
+  List<ClassElement> get types => wrappedUnit.types;
+
+  @override
+  CompilationUnit get unit => wrappedUnit.unit;
+
+  @override
+  String get uri => wrappedUnit.uri;
+
+  @override
+  int get uriEnd => wrappedUnit.uriEnd;
+
+  @override
+  int get uriOffset => wrappedUnit.uriOffset;
+
+  @override
+  T accept<T>(ElementVisitor<T> visitor) => wrappedUnit.accept(visitor);
+
+  @override
+  String computeDocumentationComment() => wrappedUnit
+      .computeDocumentationComment(); // ignore: deprecated_member_use
+
+  @override
+  CompilationUnit computeNode() => wrappedUnit.computeNode();
+
+  @override
+  E getAncestor<E extends Element>(Predicate<Element> predicate) =>
+      wrappedUnit.getAncestor(predicate);
+
+  @override
+  ClassElement getEnum(String name) => wrappedUnit.getEnum(name);
+
+  @override
+  String getExtendedDisplayName(String shortName) =>
+      wrappedUnit.getExtendedDisplayName(shortName);
+
+  @override
+  ClassElement getType(String className) => wrappedUnit.getType(className);
+
+  @override
+  bool isAccessibleIn(LibraryElement library) =>
+      wrappedUnit.isAccessibleIn(library);
+
+  @override
+  void visitChildren(ElementVisitor visitor) =>
+      wrappedUnit.visitChildren(visitor);
+}
+
+/// Implementation of [ImportElement] that wraps an [ImportElement] and defers
+/// all method calls to it.
+///
+/// This is intended to be used by the rare clients that must reimplement
+/// [ImportElement], so that they won't be broken if new methods are added.
+class WrappedImportElement implements ImportElement {
+  final ImportElement wrappedImport;
+
+  WrappedImportElement(this.wrappedImport);
+
+  @override
+  List<NamespaceCombinator> get combinators => wrappedImport.combinators;
+
+  @override
+  AnalysisContext get context => wrappedImport.context;
+
+  @override
+  String get displayName => wrappedImport.displayName;
+
+  @override
+  String get documentationComment => wrappedImport.documentationComment;
+
+  @override
+  LibraryElement get enclosingElement => wrappedImport.enclosingElement;
+
+  @override
+  bool get hasAlwaysThrows => wrappedImport.hasAlwaysThrows;
+
+  @override
+  bool get hasDeprecated => wrappedImport.hasDeprecated;
+
+  @override
+  bool get hasFactory => wrappedImport.hasFactory;
+
+  @override
+  bool get hasIsTest => wrappedImport.hasIsTest;
+
+  @override
+  bool get hasIsTestGroup => wrappedImport.hasIsTestGroup;
+
+  @override
+  bool get hasJS => wrappedImport.hasJS;
+
+  @override
+  bool get hasOverride => wrappedImport.hasOverride;
+
+  @override
+  bool get hasProtected => wrappedImport.hasProtected;
+
+  @override
+  bool get hasRequired => wrappedImport.hasRequired;
+
+  @override
+  bool get hasVisibleForTemplate => wrappedImport.hasVisibleForTemplate;
+
+  @override
+  bool get hasVisibleForTesting => wrappedImport.hasVisibleForTesting;
+
+  @override
+  int get id => wrappedImport.id;
+
+  @override
+  LibraryElement get importedLibrary => wrappedImport.importedLibrary;
+
+  @override
+  bool get isAlwaysThrows => hasAlwaysThrows;
+
+  @override
+  bool get isDeferred => wrappedImport.isDeferred;
+
+  @override
+  bool get isDeprecated => hasDeprecated;
+
+  @override
+  bool get isFactory => hasFactory;
+
+  @override
+  bool get isJS => hasJS;
+
+  @override
+  bool get isOverride => hasOverride;
+
+  @override
+  bool get isPrivate => wrappedImport.isPrivate;
+
+  @override
+  bool get isProtected => hasProtected;
+
+  @override
+  bool get isPublic => wrappedImport.isPublic;
+
+  @override
+  bool get isRequired => hasRequired;
+
+  @override
+  bool get isSynthetic => wrappedImport.isSynthetic;
+
+  @override
+  bool get isVisibleForTesting => hasVisibleForTesting;
+
+  @override
+  ElementKind get kind => wrappedImport.kind;
+
+  @override
+  LibraryElement get library => wrappedImport.library;
+
+  @override
+  Source get librarySource => wrappedImport.librarySource;
+
+  @override
+  ElementLocation get location => wrappedImport.location;
+
+  @override
+  List<ElementAnnotation> get metadata => wrappedImport.metadata;
+
+  @override
+  String get name => wrappedImport.name;
+
+  @override
+  int get nameLength => wrappedImport.nameLength;
+
+  @override
+  int get nameOffset => wrappedImport.nameOffset;
+
+  @override
+  Namespace get namespace => wrappedImport.namespace;
+
+  @override
+  PrefixElement get prefix => wrappedImport.prefix;
+
+  @override
+  int get prefixOffset => wrappedImport.prefixOffset;
+
+  @override
+  Source get source => wrappedImport.source;
+
+  @override
+  CompilationUnit get unit => wrappedImport.unit;
+
+  @override
+  String get uri => wrappedImport.uri;
+
+  @override
+  int get uriEnd => wrappedImport.uriEnd;
+
+  @override
+  int get uriOffset => wrappedImport.uriOffset;
+
+  @override
+  T accept<T>(ElementVisitor<T> visitor) => wrappedImport.accept(visitor);
+
+  @override
+  String computeDocumentationComment() => wrappedImport
+      .computeDocumentationComment(); // ignore: deprecated_member_use
+
+  @override
+  AstNode computeNode() => wrappedImport.computeNode();
+
+  @override
+  E getAncestor<E extends Element>(Predicate<Element> predicate) =>
+      wrappedImport.getAncestor(predicate);
+
+  @override
+  String getExtendedDisplayName(String shortName) =>
+      wrappedImport.getExtendedDisplayName(shortName);
+
+  @override
+  bool isAccessibleIn(LibraryElement library) =>
+      wrappedImport.isAccessibleIn(library);
+
+  @override
+  void visitChildren(ElementVisitor visitor) =>
+      wrappedImport.visitChildren(visitor);
+}
+
+/// Implementation of [LibraryElement] that wraps a [LibraryElement] and defers
+/// all method calls to it.
+///
+/// This is intended to be used by the rare clients that must reimplement
+/// [LibraryElement], so that they won't be broken if new methods are added.
+class WrappedLibraryElement implements LibraryElement {
+  final LibraryElement wrappedLib;
+
+  WrappedLibraryElement(this.wrappedLib);
+
+  @override
+  AnalysisContext get context => wrappedLib.context;
+
+  @override
+  CompilationUnitElement get definingCompilationUnit =>
+      wrappedLib.definingCompilationUnit;
+
+  @override
+  String get displayName => wrappedLib.displayName;
+
+  @override
+  String get documentationComment => wrappedLib.documentationComment;
+
+  @override
+  Element get enclosingElement => wrappedLib.enclosingElement;
+
+  @override
+  FunctionElement get entryPoint => wrappedLib.entryPoint;
+
+  @override
+  List<LibraryElement> get exportedLibraries => wrappedLib.exportedLibraries;
+
+  @override
+  Namespace get exportNamespace => wrappedLib.exportNamespace;
+
+  @override
+  List<ExportElement> get exports => wrappedLib.exports;
+
+  @override
+  bool get hasAlwaysThrows => wrappedLib.hasAlwaysThrows;
+
+  @override
+  bool get hasDeprecated => wrappedLib.hasDeprecated;
+
+  @override
+  bool get hasExtUri => wrappedLib.hasExtUri;
+
+  @override
+  bool get hasFactory => wrappedLib.hasFactory;
+
+  @override
+  bool get hasIsTest => wrappedLib.hasIsTest;
+
+  @override
+  bool get hasIsTestGroup => wrappedLib.hasIsTestGroup;
+
+  @override
+  bool get hasJS => wrappedLib.hasJS;
+
+  @override
+  bool get hasLoadLibraryFunction => wrappedLib.hasLoadLibraryFunction;
+
+  @override
+  bool get hasOverride => wrappedLib.hasOverride;
+
+  @override
+  bool get hasProtected => wrappedLib.hasProtected;
+
+  @override
+  bool get hasRequired => wrappedLib.hasRequired;
+
+  @override
+  bool get hasVisibleForTemplate => wrappedLib.hasVisibleForTemplate;
+
+  @override
+  bool get hasVisibleForTesting => wrappedLib.hasVisibleForTesting;
+
+  @override
+  int get id => wrappedLib.id;
+
+  @override
+  String get identifier => wrappedLib.identifier;
+
+  @override
+  List<LibraryElement> get importedLibraries => wrappedLib.importedLibraries;
+
+  @override
+  List<ImportElement> get imports => wrappedLib.imports;
+
+  @override
+  bool get isAlwaysThrows => hasAlwaysThrows;
+
+  @override
+  bool get isBrowserApplication => wrappedLib.isBrowserApplication;
+
+  @override
+  bool get isDartAsync => wrappedLib.isDartAsync;
+
+  @override
+  bool get isDartCore => wrappedLib.isDartCore;
+
+  @override
+  bool get isDeprecated => hasDeprecated;
+
+  @override
+  bool get isFactory => hasFactory;
+
+  @override
+  bool get isInSdk => wrappedLib.isInSdk;
+
+  @override
+  bool get isJS => hasJS;
+
+  @override
+  bool get isOverride => hasOverride;
+
+  @override
+  bool get isPrivate => wrappedLib.isPrivate;
+
+  @override
+  bool get isProtected => hasProtected;
+
+  @override
+  bool get isPublic => wrappedLib.isPublic;
+
+  @override
+  bool get isRequired => hasRequired;
+
+  @override
+  bool get isSynthetic => wrappedLib.isSynthetic;
+
+  @override
+  bool get isVisibleForTesting => hasVisibleForTesting;
+
+  @override
+  ElementKind get kind => wrappedLib.kind;
+
+  @override
+  LibraryElement get library => wrappedLib.library;
+
+  @override
+  List<LibraryElement> get libraryCycle => wrappedLib.libraryCycle;
+
+  @override
+  Source get librarySource => wrappedLib.librarySource;
+
+  @override
+  FunctionElement get loadLibraryFunction => wrappedLib.loadLibraryFunction;
+
+  @override
+  ElementLocation get location => wrappedLib.location;
+
+  @override
+  List<ElementAnnotation> get metadata => wrappedLib.metadata;
+
+  @override
+  String get name => wrappedLib.name;
+
+  @override
+  int get nameLength => wrappedLib.nameLength;
+
+  @override
+  int get nameOffset => wrappedLib.nameOffset;
+
+  @override
+  List<CompilationUnitElement> get parts => wrappedLib.parts;
+
+  @override
+  List<PrefixElement> get prefixes => wrappedLib.prefixes;
+
+  @override
+  Namespace get publicNamespace => wrappedLib.publicNamespace;
+
+  @override
+  Source get source => wrappedLib.source;
+
+  @override
+  CompilationUnit get unit => wrappedLib.unit;
+
+  @override
+  List<CompilationUnitElement> get units => wrappedLib.units;
+
+  @override
+  T accept<T>(ElementVisitor<T> visitor) => wrappedLib.accept(visitor);
+
+  @override
+  String computeDocumentationComment() =>
+      wrappedLib.computeDocumentationComment(); // ignore: deprecated_member_use
+
+  @override
+  AstNode computeNode() => wrappedLib.computeNode();
+
+  @override
+  E getAncestor<E extends Element>(Predicate<Element> predicate) =>
+      wrappedLib.getAncestor(predicate);
+
+  @override
+  String getExtendedDisplayName(String shortName) =>
+      wrappedLib.getExtendedDisplayName(shortName);
+
+  @override
+  List<ImportElement> getImportsWithPrefix(PrefixElement prefix) =>
+      wrappedLib.getImportsWithPrefix(prefix);
+
+  @override
+  ClassElement getType(String className) => wrappedLib.getType(className);
+
+  @override
+  bool isAccessibleIn(LibraryElement library) =>
+      wrappedLib.isAccessibleIn(library);
+
+  @override
+  void visitChildren(ElementVisitor visitor) =>
+      wrappedLib.visitChildren(visitor);
+}
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index c5c6e40..97341b4 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -310,6 +310,16 @@
       "of '{1}'.");
 
   /// This hint is generated anywhere where a member annotated with
+  /// `@visibleForTemplate` is used outside of a "template" Dart file.
+  ///
+  /// Parameters:
+  /// 0: the name of the member
+  /// 1: the name of the defining class
+  static const HintCode INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER =
+      const HintCode('INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER',
+          "The member '{0}' can only be used within '{1}' or a template library.");
+
+  /// This hint is generated anywhere where a member annotated with
   /// `@visibleForTesting` is used outside the defining library, or a test.
   ///
   /// Parameters:
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 230f6da..764c982 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -885,7 +885,7 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
+  void handleType(Token beginToken) {
     debugEvent("Type");
 
     TypeArgumentList arguments = pop();
@@ -1062,7 +1062,7 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token semicolon) {
+  void endFunctionType(Token functionToken) {
     assert(optional('Function', functionToken));
     debugEvent("FunctionType");
 
@@ -2412,7 +2412,7 @@
     // keyword up to an element?
     handleIdentifier(voidKeyword, IdentifierContext.typeReference);
     handleNoTypeArguments(voidKeyword);
-    handleType(voidKeyword, voidKeyword);
+    handleType(voidKeyword);
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index df030a7..d34072c 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -1291,7 +1291,11 @@
 
   /**
    * Return `true` if analyzer should enable the use of Dart 2.0 features.
+   *
+   * This getter is deprecated, and is hard-coded to always return true.
    */
+  @Deprecated(
+      'This getter is deprecated and is hard-coded to always return true.')
   bool get previewDart2;
 
   /**
@@ -1304,10 +1308,10 @@
   /**
    * Return `true` if strong mode analysis should be used.
    *
-   * This field is deprecated, and is hard-coded to always return true.
+   * This getter is deprecated, and is hard-coded to always return true.
    */
   @Deprecated(
-      'This field is deprecated and is hard-coded to always return true.')
+      'This getter is deprecated and is hard-coded to always return true.')
   bool get strongMode;
 
   /**
@@ -1458,8 +1462,16 @@
   @override
   bool useFastaParser = false;
 
+  /// [useCFE] exists on [AnalysisOptionsImpl] but not [AnalysisOptions] so as
+  /// not to make it public API. It's used when calculating the driver signature
+  /// of cached results.
+  bool useCFE = false;
+
   @override
-  bool previewDart2 = true;
+  bool get previewDart2 => true;
+
+  // A no-op setter.
+  set previewDart2(bool value) {}
 
   @override
   bool disableCacheFlushing = false;
@@ -1516,13 +1528,13 @@
     lintRules = options.lintRules;
     preserveComments = options.preserveComments;
     useFastaParser = options.useFastaParser;
-    previewDart2 = options.previewDart2;
     if (options is AnalysisOptionsImpl) {
       declarationCasts = options.declarationCasts;
       strongModeHints = options.strongModeHints;
       implicitCasts = options.implicitCasts;
       nonnullableTypes = options.nonnullableTypes;
       implicitDynamic = options.implicitDynamic;
+      useCFE = options.useCFE;
     }
     trackCacheDependencies = options.trackCacheDependencies;
     disableCacheFlushing = options.disableCacheFlushing;
@@ -1657,6 +1669,7 @@
       buffer.addBool(strongModeHints);
       buffer.addBool(useFastaParser);
       buffer.addBool(previewDart2);
+      buffer.addBool(useCFE);
 
       // Append error processors.
       buffer.addInt(errorProcessors.length);
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 9b6f9cf..3cd2978 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -5258,20 +5258,18 @@
       return;
     }
 
-    // Anything can be returned to `dynamic`, or to `Future<dynamic>` in
-    // an async function.
-    if (toType.isDynamic) {
-      return;
-    }
-
-    // Anything can be return to `Future<Null>` in an async function
-    if (_inAsync && toType.isDartCoreNull) {
-      return;
-    }
-
-    // If we're not in one of the `void` related special cases
-    // just check assignability.
-    if (!expectedType.isVoid && !fromType.isVoid) {
+    if (toType.isVoid) {
+      if (fromType.isVoid ||
+          fromType.isDynamic ||
+          fromType.isDartCoreNull ||
+          fromType.isBottom) {
+        return;
+      }
+    } else if (fromType.isVoid) {
+      if (toType.isDynamic || toType.isDartCoreNull || toType.isBottom) {
+        return;
+      }
+    } else {
       var checkWithType = (!_inAsync)
           ? fromType
           : _typeProvider.futureType.instantiate(<DartType>[fromType]);
@@ -5281,31 +5279,6 @@
       }
     }
 
-    // Void related special cases.  If the expression type flattens
-    // to `void`, and the expected type doesn't, then it's an error.
-    // Otherwise:
-    if (toType.isVoid) {
-      // In the case that the expected type is `void`
-      if (expectedType.isVoid) {
-        // Valid if the expression type is void, dynamic or Null
-        if (expressionType.isVoid ||
-            expressionType.isDynamic ||
-            expressionType.isDartCoreNull ||
-            expressionType.isBottom) {
-          return;
-        }
-      } else {
-        // The expected type is Future<void> or FutureOr<void>,
-        // and the return is valid if the expression type flattens
-        // to void, dynamic, or Null.
-        if (fromType.isVoid ||
-            fromType.isDynamic ||
-            fromType.isDartCoreNull ||
-            fromType.isBottom) {
-          return;
-        }
-      }
-    }
     reportTypeError();
   }
 
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 9178d4c..49d1e51 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -233,6 +233,8 @@
 
   static String _TO_INT_METHOD_NAME = "toInt";
 
+  static final _templateExtension = '.template';
+
   static final _testDir = '${path.separator}test${path.separator}';
 
   static final _testingDir = '${path.separator}testing${path.separator}';
@@ -415,14 +417,6 @@
   }
 
   @override
-  Object visitFunctionExpression(FunctionExpression node) {
-    if (node.parent is! FunctionDeclaration) {
-      _checkForMissingReturn(null, node.body, node.declaredElement, node);
-    }
-    return super.visitFunctionExpression(node);
-  }
-
-  @override
   Object visitImportDirective(ImportDirective node) {
     _checkForDeprecatedMemberUse(node.uriElement, node);
     ImportElement importElement = node.element;
@@ -849,9 +843,13 @@
   ///   getter/setter, method closure or invocation accessed outside a subclass,
   ///   or accessed outside the library wherein the identifier is declared, or
   /// * if the given identifier is a closure, field, getter, setter, method
+  ///   closure or invocation which is annotated with `visibleForTemplate`, and
+  ///   is accessed outside of the defining library, and the current library
+  ///   does not have the suffix '.template' in its source path, or
+  /// * if the given identifier is a closure, field, getter, setter, method
   ///   closure or invocation which is annotated with `visibleForTesting`, and
   ///   is accessed outside of the defining library, and the current library
-  ///   does not have the word 'test' in its name.
+  ///   does not have a directory named 'test' or 'testing' in its path.
   void _checkForInvalidAccess(SimpleIdentifier identifier) {
     if (identifier.inDeclarationContext()) {
       return;
@@ -871,6 +869,21 @@
       return false;
     }
 
+    bool isVisibleForTemplate(Element element) {
+      if (element == null) {
+        return false;
+      }
+      if (element.hasVisibleForTemplate) {
+        return true;
+      }
+      if (element is PropertyAccessorElement &&
+          element.enclosingElement is ClassElement &&
+          element.variable.hasVisibleForTemplate) {
+        return true;
+      }
+      return false;
+    }
+
     bool isVisibleForTesting(Element element) {
       if (element == null) {
         return false;
@@ -897,12 +910,19 @@
         identifier.parent is Combinator &&
         identifier.parent.parent is ExportDirective;
 
+    bool inTemplateSource(LibraryElement library) =>
+        library.definingCompilationUnit.source.fullName
+            .contains(_templateExtension);
+
     bool inTestDirectory(LibraryElement library) =>
         library.definingCompilationUnit.source.fullName.contains(_testDir) ||
         library.definingCompilationUnit.source.fullName.contains(_testingDir);
 
     Element element = identifier.staticElement;
-    if (!isProtected(element) && !isVisibleForTesting(element)) {
+    if (!isProtected(element) &&
+        !isVisibleForTemplate(element) &&
+        !isVisibleForTesting(element)) {
+      // Without any of these annotations, the access is valid.
       return;
     }
 
@@ -920,19 +940,30 @@
         return;
       }
     }
+    if (isVisibleForTemplate(element)) {
+      if (inCurrentLibrary(element) ||
+          inTemplateSource(_currentLibrary) ||
+          inExportDirective(identifier) ||
+          inCommentReference(identifier)) {
+        // The access is valid; even if [element] is also marked `protected`,
+        // the "visibilities" are unioned.
+        return;
+      }
+    }
     if (isVisibleForTesting(element)) {
       if (inCurrentLibrary(element) ||
           inTestDirectory(_currentLibrary) ||
           inExportDirective(identifier) ||
           inCommentReference(identifier)) {
-        // The access is valid; even if [element] is also marked
-        // `protected`, the "visibilities" are unioned.
+        // The access is valid; even if [element] is also marked `protected`,
+        // the "visibilities" are unioned.
         return;
       }
     }
 
     // At this point, [identifier] was not cleared as protected access, nor
-    // cleared as access for testing. Report the appropriate violation(s).
+    // cleared as access for templates or testing. Report the appropriate
+    // violation(s).
     Element definingClass = element.enclosingElement;
     if (isProtected(element)) {
       _errorReporter.reportErrorForNode(
@@ -940,6 +971,12 @@
           identifier,
           [identifier.name.toString(), definingClass.name]);
     }
+    if (isVisibleForTemplate(element)) {
+      _errorReporter.reportErrorForNode(
+          HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER,
+          identifier,
+          [identifier.name.toString(), definingClass.name]);
+    }
     if (isVisibleForTesting(element)) {
       _errorReporter.reportErrorForNode(
           HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
@@ -1079,28 +1116,7 @@
             ? returnType.flattenFutures(_typeSystem)
             : returnType;
 
-        // Function expressions without a return will have their return type set
-        // to `Null` regardless of their context type. So we need to figure out
-        // if a return type was expected from the original downwards context.
-        //
-        // This helps detect hint cases like `int Function() f = () {}`.
-        // See https://github.com/dart-lang/sdk/issues/28233 for context.
-        if (flattenedType.isDartCoreNull &&
-            functionNode is FunctionExpression) {
-          var contextType = InferenceContext.getContext(functionNode);
-          if (contextType is FunctionType) {
-            returnType = contextType.returnType;
-            flattenedType = body.isAsynchronous
-                ? returnType.flattenFutures(_typeSystem)
-                : returnType;
-          }
-        }
-
-        // dynamic, Null, void, and FutureOr<T> where T is (dynamic, Null, void)
-        // are allowed to omit a return.
-        if (flattenedType.isDartAsyncFutureOr) {
-          flattenedType = (flattenedType as InterfaceType).typeArguments[0];
-        }
+        // dynamic/Null/void are allowed to omit a return.
         if (flattenedType.isDynamic ||
             flattenedType.isDartCoreNull ||
             flattenedType.isVoid) {
@@ -2177,17 +2193,17 @@
         if (lhsResult != null) {
           bool value = lhsResult.value.toBoolValue();
           if (value == true && isBarBar) {
-            // report error on else block: true || !e!
+            // Report error on "else" block: true || !e!
             _errorReporter.reportErrorForNode(
                 HintCode.DEAD_CODE, node.rightOperand);
-            // only visit the LHS:
+            // Only visit the LHS:
             lhsCondition?.accept(this);
             return null;
           } else if (value == false && isAmpAmp) {
-            // report error on if block: false && !e!
+            // Report error on "if" block: false && !e!
             _errorReporter.reportErrorForNode(
                 HintCode.DEAD_CODE, node.rightOperand);
-            // only visit the LHS:
+            // Only visit the LHS:
             lhsCondition?.accept(this);
             return null;
           }
@@ -2243,13 +2259,13 @@
           _getConstantBooleanValue(conditionExpression);
       if (result != null) {
         if (result.value.toBoolValue() == true) {
-          // report error on else block: true ? 1 : !2!
+          // Report error on "else" block: true ? 1 : !2!
           _errorReporter.reportErrorForNode(
               HintCode.DEAD_CODE, node.elseExpression);
           node.thenExpression?.accept(this);
           return null;
         } else {
-          // report error on if block: false ? !1! : 2
+          // Report error on "if" block: false ? !1! : 2
           _errorReporter.reportErrorForNode(
               HintCode.DEAD_CODE, node.thenExpression);
           node.elseExpression?.accept(this);
@@ -2270,7 +2286,7 @@
   Object visitExportDirective(ExportDirective node) {
     ExportElement exportElement = node.element;
     if (exportElement != null) {
-      // The element is null when the URI is invalid
+      // The element is null when the URI is invalid.
       LibraryElement library = exportElement.exportedLibrary;
       if (library != null && !library.isSynthetic) {
         for (Combinator combinator in node.combinators) {
@@ -2290,7 +2306,7 @@
           _getConstantBooleanValue(conditionExpression);
       if (result != null) {
         if (result.value.toBoolValue() == true) {
-          // report error on else block: if(true) {} else {!}
+          // Report error on else block: if(true) {} else {!}
           Statement elseStatement = node.elseStatement;
           if (elseStatement != null) {
             _errorReporter.reportErrorForNode(
@@ -2299,7 +2315,7 @@
             return null;
           }
         } else {
-          // report error on if block: if (false) {!} else {}
+          // Report error on if block: if (false) {!} else {}
           _errorReporter.reportErrorForNode(
               HintCode.DEAD_CODE, node.thenStatement);
           node.elseStatement?.accept(this);
@@ -2374,8 +2390,8 @@
     for (int i = 0; i < numOfCatchClauses; i++) {
       CatchClause catchClause = catchClauses[i];
       if (catchClause.onKeyword != null) {
-        // on-catch clause found, verify that the exception type is not a
-        // subtype of a previous on-catch exception type
+        // An on-catch clause was found; verify that the exception type is not a
+        // subtype of a previous on-catch exception type.
         DartType currentType = catchClause.exceptionType?.type;
         if (currentType != null) {
           if (currentType.isObject) {
@@ -2385,7 +2401,7 @@
             // following catch clauses (and don't visit them).
             catchClause?.accept(this);
             if (i + 1 != numOfCatchClauses) {
-              // this catch clause is not the last in the try statement
+              // This catch clause is not the last in the try statement.
               CatchClause nextCatchClause = catchClauses[i + 1];
               CatchClause lastCatchClause = catchClauses[numOfCatchClauses - 1];
               int offset = nextCatchClause.offset;
@@ -2419,7 +2435,7 @@
         // (and don't visit them).
         catchClause?.accept(this);
         if (i + 1 != numOfCatchClauses) {
-          // this catch clause is not the last in the try statement
+          // This catch clause is not the last in the try statement.
           CatchClause nextCatchClause = catchClauses[i + 1];
           CatchClause lastCatchClause = catchClauses[numOfCatchClauses - 1];
           int offset = nextCatchClause.offset;
@@ -2442,7 +2458,7 @@
           _getConstantBooleanValue(conditionExpression);
       if (result != null) {
         if (result.value.toBoolValue() == false) {
-          // report error on if block: while (false) {!}
+          // Report error on while block: while (false) {!}
           _errorReporter.reportErrorForNode(HintCode.DEAD_CODE, node.body);
           return null;
         }
@@ -3322,7 +3338,13 @@
     bool outerBreakValue = _enclosingBlockContainsBreak;
     _enclosingBlockContainsBreak = false;
     try {
-      return _nodeExits(node.iterable);
+      bool iterableExits = _nodeExits(node.iterable);
+      // Discard whether the for-each body exits; since the for-each iterable
+      // may be empty, execution may never enter the body, so it doesn't matter
+      // if it exits or not.  We still must visit the body, to accurately
+      // manage `_enclosingBlockBreaksLabel`.
+      _nodeExits(node.body);
+      return iterableExits;
     } finally {
       _enclosingBlockContainsBreak = outerBreakValue;
     }
@@ -6483,8 +6505,7 @@
    * expressions.
    */
   ConstantAstCloner _createCloner() {
-    return new ConstantAstCloner(
-        definingLibrary.context.analysisOptions.previewDart2);
+    return new ConstantAstCloner();
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/kernel/resynthesize.dart b/pkg/analyzer/lib/src/kernel/resynthesize.dart
index 88fcecc..d0d8426 100644
--- a/pkg/analyzer/lib/src/kernel/resynthesize.dart
+++ b/pkg/analyzer/lib/src/kernel/resynthesize.dart
@@ -27,14 +27,22 @@
 import 'package:kernel/type_environment.dart' as kernel;
 import 'package:path/path.dart' as pathos;
 
+/// Information about a single file - a library or part.
+class KernelFileInfo {
+  final bool exists;
+  final int contentLength;
+  final LineInfo lineInfo;
+  final kernel.Library library;
+
+  KernelFileInfo(this.exists, this.contentLength, this.lineInfo, this.library);
+}
+
 /**
  * Object that can resynthesize analyzer [LibraryElement] from Kernel.
  */
 class KernelResynthesizer implements ElementResynthesizer {
   final AnalysisContextImpl _analysisContext;
-  final Map<String, LineInfo> _lineInfoMap;
-  final Map<String, kernel.Library> _kernelMap;
-  final Map<String, bool> _libraryExistMap;
+  final Map<String, KernelFileInfo> _fileInfoMap;
   final Map<String, LibraryElementImpl> _libraryMap = {};
 
   /**
@@ -45,8 +53,7 @@
   /// The type provider for this resynthesizer.
   SummaryTypeProvider _typeProvider;
 
-  KernelResynthesizer(this._analysisContext, this._lineInfoMap, this._kernelMap,
-      this._libraryExistMap) {
+  KernelResynthesizer(this._analysisContext, this._fileInfoMap) {
     _buildTypeProvider();
     _analysisContext.typeProvider = _typeProvider;
   }
@@ -187,10 +194,10 @@
    */
   LibraryElementImpl getLibrary(String uriStr) {
     return _libraryMap.putIfAbsent(uriStr, () {
-      var kernel = _kernelMap[uriStr];
+      var kernel = _fileInfoMap[uriStr].library;
       if (kernel == null) return null;
 
-      if (_libraryExistMap[uriStr] != true) {
+      if (_fileInfoMap[uriStr]?.exists != true) {
         return _newSyntheticLibrary(uriStr);
       }
 
@@ -202,18 +209,19 @@
       if (libraryElement == null) return null;
 
       // Build the defining unit.
-      var definingUnit = libraryContext._buildUnit(null).unit;
-      definingUnit.lineInfo = _lineInfoMap[uriStr];
+      var definingUnit = libraryContext._buildUnit(uriStr, kernel.fileUri).unit;
       libraryElement.definingCompilationUnit = definingUnit;
 
       // Build units for parts.
       var parts = new List<CompilationUnitElementImpl>(kernel.parts.length);
       for (int i = 0; i < kernel.parts.length; i++) {
-        var fileUriStr =
-            kernel.fileUri.resolve(kernel.parts[i].partUri).toString();
-        var unitContext = libraryContext._buildUnit(fileUriStr);
+        var relativeUriStr = kernel.parts[i].partUri;
+        var importUriStr =
+            resolveRelativeUri(kernel.importUri, Uri.parse(relativeUriStr))
+                .toString();
+        var fileUri = kernel.fileUri.resolve(relativeUriStr);
+        var unitContext = libraryContext._buildUnit(importUriStr, fileUri);
         var partUnit = unitContext.unit;
-        partUnit.lineInfo = _lineInfoMap[fileUriStr];
         parts[i] = partUnit;
       }
       libraryElement.parts = parts;
@@ -879,7 +887,9 @@
   }
 
   @override
-  kernel.Library get coreLibrary => resynthesizer._kernelMap['dart:core'];
+  kernel.Library get coreLibrary {
+    return resynthesizer._fileInfoMap['dart:core'].library;
+  }
 
   @override
   bool get hasExtUri {
@@ -929,39 +939,18 @@
         new LibraryElementImpl.forKernel(resynthesizer._analysisContext, this);
   }
 
-  _KernelUnitResynthesizerContextImpl _buildUnit(String fileUri) {
-    var unitContext = new _KernelUnitResynthesizerContextImpl(
-        this, fileUri ?? "${library.fileUri}");
+  _KernelUnitResynthesizerContextImpl _buildUnit(String uriStr, Uri fileUri) {
+    var unitContext = new _KernelUnitResynthesizerContextImpl(this, fileUri);
+
     var unitElement = new CompilationUnitElementImpl.forKernel(
         libraryElement, unitContext, '<no name>');
     unitContext.unit = unitElement;
     unitElement.librarySource = librarySource;
-
-    if (fileUri != null) {
-      String absoluteUriStr;
-      if (fileUri.startsWith('file://')) {
-        // Compute the URI relative to the library directory.
-        // E.g. when the library directory URI is `sdk/lib/core`, and the unit
-        // URI is `sdk/lib/core/bool.dart`, the result is `bool.dart`.
-        var relativeUri =
-            pathos.url.relative(fileUri, from: libraryDirectoryUri);
-        // Compute the absolute URI.
-        // When the absolute library URI is `dart:core`, and the relative
-        // URI is `bool.dart`, the result is `dart:core/bool.dart`.
-        Uri absoluteUri =
-            resolveRelativeUri(librarySource.uri, Uri.parse(relativeUri));
-        absoluteUriStr = absoluteUri.toString();
-      } else {
-        // File URIs must have the "file" scheme.
-        // But for invalid URIs, which cannot be even parsed, FrontEnd returns
-        // URIs with the "org-dartlang-malformed-uri" scheme, and does not
-        // resolve them to file URIs.
-        // We don't have anything better than to use these URIs as is.
-        absoluteUriStr = fileUri;
-      }
-      unitElement.source = resynthesizer._getSource(absoluteUriStr);
-    } else {
-      unitElement.source = librarySource;
+    if (!fileUri.isScheme('org-dartlang-malformed-uri')) {
+      var fileInfo = resynthesizer._fileInfoMap[uriStr];
+      unitElement.setCodeRange(0, fileInfo.contentLength);
+      unitElement.lineInfo = fileInfo.lineInfo;
+      unitElement.source = resynthesizer._getSource(uriStr);
     }
 
     unitContext.unit = unitElement;
@@ -986,9 +975,9 @@
   @override
   List<kernel.Expression> get annotations {
     if (_annotations == null) {
+      var libraryFileUri = context.libraryContext.library.fileUri;
       for (var part in context.libraryContext.library.parts) {
-        if ("${context.libraryContext.library.fileUri.resolve(part.partUri)}" ==
-            context.fileUri) {
+        if (libraryFileUri.resolve(part.partUri) == context.fileUri) {
           return _annotations = part.annotations;
         }
       }
@@ -999,25 +988,25 @@
   @override
   List<kernel.Class> get classes =>
       _classes ??= context.libraryContext.library.classes
-          .where((n) => "${n.fileUri}" == context.fileUri)
+          .where((n) => n.fileUri == context.fileUri)
           .toList(growable: false);
 
   @override
   List<kernel.Field> get fields =>
       _fields ??= context.libraryContext.library.fields
-          .where((n) => "${n.fileUri}" == context.fileUri)
+          .where((n) => n.fileUri == context.fileUri)
           .toList(growable: false);
 
   @override
   List<kernel.Procedure> get procedures =>
       _procedures ??= context.libraryContext.library.procedures
-          .where((n) => "${n.fileUri}" == context.fileUri)
+          .where((n) => n.fileUri == context.fileUri)
           .toList(growable: false);
 
   @override
   List<kernel.Typedef> get typedefs =>
       _typedefs ??= context.libraryContext.library.typedefs
-          .where((n) => "${n.fileUri}" == context.fileUri)
+          .where((n) => n.fileUri == context.fileUri)
           .toList(growable: false);
 }
 
@@ -1029,7 +1018,7 @@
   static final Uri dartInternalUri = Uri.parse('dart:_internal');
 
   final _KernelLibraryResynthesizerContextImpl libraryContext;
-  final String fileUri;
+  final Uri fileUri;
 
   CompilationUnitElementImpl unit;
 
diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart
index e01d001..7c20b56 100644
--- a/pkg/analyzer/lib/src/summary/resynthesize.dart
+++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
@@ -1587,7 +1587,7 @@
   Expression _buildConstExpression(ElementImpl context, UnlinkedExpr uc) {
     var expression = new ExprBuilder(this, context, uc).build();
 
-    if (expression != null && context.context.analysisOptions.previewDart2) {
+    if (expression != null) {
       astRewriteVisitor ??= new AstRewriteVisitor(
           libraryResynthesizer.summaryResynthesizer.context.typeSystem,
           libraryResynthesizer.library,
diff --git a/pkg/analyzer/lib/src/summary/summary_file_builder.dart b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
index 84da3a1..02d89f4 100644
--- a/pkg/analyzer/lib/src/summary/summary_file_builder.dart
+++ b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
@@ -148,7 +148,7 @@
     LineInfo lineInfo = new LineInfo(scanner.lineStarts);
     Parser parser = new Parser(source, errorListener,
         useFasta: context.analysisOptions.useFastaParser);
-    parser.enableOptionalNewAndConst = context.analysisOptions.previewDart2;
+    parser.enableOptionalNewAndConst = true;
     parser.parseGenericMethodComments = strong;
     CompilationUnit unit = parser.parseCompilationUnit(token);
     unit.lineInfo = lineInfo;
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart
index aa81aae..ca7b0eb 100644
--- a/pkg/analyzer/lib/src/task/dart.dart
+++ b/pkg/analyzer/lib/src/task/dart.dart
@@ -3761,7 +3761,7 @@
     parser.parseFunctionBodies =
         options.analyzeFunctionBodiesPredicate(_source);
     parser.parseGenericMethodComments = true;
-    parser.enableOptionalNewAndConst = options.previewDart2;
+    parser.enableOptionalNewAndConst = true;
     CompilationUnit unit = parser.parseCompilationUnit(tokenStream);
     unit.lineInfo = lineInfo;
 
@@ -5110,14 +5110,12 @@
     //
     // Re-write the AST to handle the optional new and const feature.
     //
-    if (library.context.analysisOptions.previewDart2) {
-      unit.accept(new AstRewriteVisitor(
-          context.typeSystem,
-          library,
-          unit.declaredElement.source,
-          typeProvider,
-          AnalysisErrorListener.NULL_LISTENER));
-    }
+    unit.accept(new AstRewriteVisitor(
+        context.typeSystem,
+        library,
+        unit.declaredElement.source,
+        typeProvider,
+        AnalysisErrorListener.NULL_LISTENER));
     //
     // Record outputs.
     //
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart
index 6bf8433..9a3b62f 100644
--- a/pkg/analyzer/lib/src/task/options.dart
+++ b/pkg/analyzer/lib/src/task/options.dart
@@ -86,7 +86,6 @@
   /// Supported `analyzer` language options.
   static const List<String> languageOptions = const [
     enableSuperMixins,
-    enablePreviewDart2,
   ];
 }
 
@@ -378,7 +377,11 @@
           bool validKey = false;
           if (k is YamlScalar) {
             key = k.value?.toString();
-            if (!AnalyzerOptions.languageOptions.contains(key)) {
+            if (AnalyzerOptions.enablePreviewDart2 == key) {
+              reporter.reportErrorForSpan(
+                  AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
+                  k.span);
+            } else if (!AnalyzerOptions.languageOptions.contains(key)) {
               builder.reportError(reporter, AnalyzerOptions.language, k);
             } else {
               // If we have a valid key, go on and check the value.
@@ -625,8 +628,6 @@
     if (boolValue != null) {
       if (feature == AnalyzerOptions.enableSuperMixins) {
         options.enableSuperMixins = boolValue;
-      } else if (feature == AnalyzerOptions.enablePreviewDart2) {
-        options.previewDart2 = boolValue;
       }
     }
   }
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
index 0d23da5..7fc7f6c 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart
@@ -1221,18 +1221,6 @@
 
   @override
   @failingTest
-  test_referencedBeforeDeclaration_hideInBlock_local() async {
-    await super.test_referencedBeforeDeclaration_hideInBlock_local();
-  }
-
-  @override
-  @failingTest
-  test_referencedBeforeDeclaration_hideInBlock_subBlock() async {
-    await super.test_referencedBeforeDeclaration_hideInBlock_subBlock();
-  }
-
-  @override
-  @failingTest
   test_referencedBeforeDeclaration_inInitializer_closure() async {
     await super.test_referencedBeforeDeclaration_inInitializer_closure();
   }
@@ -1245,12 +1233,6 @@
 
   @override
   @failingTest
-  test_referencedBeforeDeclaration_type_localVariable() async {
-    await super.test_referencedBeforeDeclaration_type_localVariable();
-  }
-
-  @override
-  @failingTest
   test_returnInGenerativeConstructor() async {
     await super.test_returnInGenerativeConstructor();
   }
@@ -1383,6 +1365,12 @@
 
   @override
   @failingTest
+  test_uriWithInterpolation_constant() async {
+    return super.test_uriWithInterpolation_constant();
+  }
+
+  @override
+  @failingTest
   test_uriWithInterpolation_nonConstant() async {
     return super.test_uriWithInterpolation_nonConstant();
   }
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
index 79ecd2d..81013ce 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -1535,26 +1535,14 @@
   test_constInitializedWithNonConstValue_missingConstInListLiteral() async {
     Source source = addSource("const List L = [0];");
     await computeAnalysisResult(source);
-    if ((analysisContext?.analysisOptions ?? driver.analysisOptions)
-        .previewDart2) {
-      assertNoErrors(source);
-    } else {
-      assertErrors(source,
-          [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE]);
-    }
+    assertNoErrors(source);
     verify([source]);
   }
 
   test_constInitializedWithNonConstValue_missingConstInMapLiteral() async {
     Source source = addSource("const Map M = {'a' : 0};");
     await computeAnalysisResult(source);
-    if ((analysisContext?.analysisOptions ?? driver.analysisOptions)
-        .previewDart2) {
-      assertNoErrors(source);
-    } else {
-      assertErrors(source,
-          [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE]);
-    }
+    assertNoErrors(source);
     verify([source]);
   }
 
@@ -2682,12 +2670,8 @@
   const A(0);
 }''');
     await computeAnalysisResult(source);
-    if (useCFE) {
-      assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]);
-    } else {
-      assertErrors(source,
-          [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED]);
-    }
+    assertErrors(source,
+        [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED]);
     verify([source]);
   }
 
@@ -7327,15 +7311,7 @@
 }
 print(x) {}''');
     await computeAnalysisResult(source);
-    if (useCFE) {
-      assertErrors(source, [
-        CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION,
-        CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION
-      ]);
-    } else {
-      assertErrors(
-          source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
-    }
+    assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   test_referencedBeforeDeclaration_hideInBlock_local() async {
@@ -7390,15 +7366,7 @@
 }
 ''');
     await computeAnalysisResult(source);
-    if (useCFE) {
-      assertErrors(source, [
-        CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION,
-        CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION
-      ]);
-    } else {
-      assertErrors(
-          source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
-    }
+    assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   test_referencedBeforeDeclaration_type_localVariable() async {
diff --git a/pkg/analyzer/test/generated/hint_code_kernel_test.dart b/pkg/analyzer/test/generated/hint_code_kernel_test.dart
index 4103dd6..3e9f85c 100644
--- a/pkg/analyzer/test/generated/hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_kernel_test.dart
@@ -133,24 +133,6 @@
 
   @failingTest
   @override
-  test_missingReturn_functionExpression_futureOrInt() async {
-    return super.test_missingReturn_functionExpression_futureOrInt();
-  }
-
-  @failingTest
-  @override
-  test_missingReturn_functionExpression_inferred() async {
-    return super.test_missingReturn_functionExpression_inferred();
-  }
-
-  @failingTest
-  @override
-  test_missingReturn_functionExpressionAsync_inferred() async {
-    return super.test_missingReturn_functionExpressionAsync_inferred();
-  }
-
-  @failingTest
-  @override
   test_mustCallSuper() async {
     return super.test_mustCallSuper();
   }
diff --git a/pkg/analyzer/test/generated/hint_code_test.dart b/pkg/analyzer/test/generated/hint_code_test.dart
index 4636086..7235f38 100644
--- a/pkg/analyzer/test/generated/hint_code_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_test.dart
@@ -76,7 +76,19 @@
   const JS([String js]);
 }
 '''
-      ]
+      ],
+      [
+        'angular_meta',
+        r'''
+library angular.meta;
+
+const _VisibleForTemplate visibleForTemplate = const _VisibleForTemplate();
+
+class _VisibleForTemplate {
+  const _VisibleForTemplate();
+}
+'''
+      ],
     ]);
   }
 
@@ -2142,7 +2154,7 @@
     verify([source, source2, source3]);
   }
 
-  test_invalidUseOfVisibleForTestingMember_OK_export() async {
+  test_invalidUseOfVisibleForTestingMember_export_OK() async {
     Source source = addNamedSource('/lib1.dart', r'''
 import 'package:meta/meta.dart';
 
@@ -2228,6 +2240,184 @@
     verify([source, source2]);
   }
 
+  test_invalidUseOfVisibleForTemplateMember_constructor() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+class A {
+  int _x;
+
+  @visibleForTemplate
+  A.forTemplate(this._x);
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  new A.forTemplate(0);
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(
+        source2, [HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTemplateMember_method() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+class A {
+  @visibleForTemplate
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+class B {
+  void b() => new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(
+        source2, [HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTemplateMember_method_OK() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+class A {
+  @visibleForTemplate
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/lib1.template.dart', r'''
+import 'lib1.dart';
+
+class B {
+  void b() => new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTemplateMember_export_OK() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+
+@visibleForTemplate
+int fn0() => 1;
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+export 'lib1.dart' show fn0;
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTemplateMember_propertyAccess() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+class A {
+  @visibleForTemplate
+  int get a => 7;
+
+  @visibleForTemplate
+  set b(_) => 7;
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  new A().a;
+  new A().b = 6;
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source2, [
+      HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER,
+      HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER
+    ]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseOfVisibleForTemplateMember_topLevelFunction() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+
+@visibleForTemplate
+int fn0() => 1;
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  fn0();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(
+        source2, [HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER]);
+    verify([source, source2]);
+  }
+
+  test_invalidUseProtectedAndForTemplate_asProtected_OK() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+import 'package:meta/meta.dart';
+class A {
+  @protected
+  @visibleForTemplate
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/lib2.dart', r'''
+import 'lib1.dart';
+
+class B extends A {
+  void b() => new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  test_invalidUseProtectedAndForTemplate_asTemplate_OK() async {
+    Source source = addNamedSource('/lib1.dart', r'''
+import 'package:angular_meta/angular_meta.dart';
+import 'package:meta/meta.dart';
+class A {
+  @protected
+  @visibleForTemplate
+  void a(){ }
+}
+''');
+    Source source2 = addNamedSource('/lib1.template.dart', r'''
+import 'lib1.dart';
+
+void main() {
+  new A().a();
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
   test_invalidUseProtectedAndForTesting_asTesting_OK() async {
     Source source = addNamedSource('/lib1.dart', r'''
 import 'package:meta/meta.dart';
@@ -2399,96 +2589,6 @@
     verify([source]);
   }
 
-  test_missingReturn_functionExpression_declared() async {
-    Source source = addSource(r'''
-main() {
-  f() {} // no hint
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-  }
-
-  test_missingReturn_functionExpression_expression() async {
-    Source source = addSource(r'''
-main() {
-  int Function() f = () => null; // no hint
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-  }
-
-  test_missingReturn_functionExpression_futureOrDynamic() async {
-    Source source = addSource(r'''
-import 'dart:async';
-main() {
-  FutureOr<dynamic> Function() f = () { print(42); };
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_missingReturn_functionExpression_futureOrInt() async {
-    Source source = addSource(r'''
-import 'dart:async';
-main() {
-  FutureOr<int> Function() f = () { print(42); };
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.MISSING_RETURN]);
-    verify([source]);
-  }
-
-  test_missingReturn_functionExpression_inferred() async {
-    Source source = addSource(r'''
-main() {
-  int Function() f = () { print(42); };
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.MISSING_RETURN]);
-    verify([source]);
-  }
-
-  test_missingReturn_functionExpression_inferred_dynamic() async {
-    Source source = addSource(r'''
-main() {
-  Function() f = () { print(42); }; // no hint
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_missingReturn_functionExpressionAsync_inferred() async {
-    Source source = addSource(r'''
-import 'dart:async';
-main() {
-  Future<int> Function() f = () async { print(42); };
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.MISSING_RETURN]);
-    verify([source]);
-  }
-
-  test_missingReturn_functionExpressionAsync_inferred_dynamic() async {
-    Source source = addSource(r'''
-import 'dart:async';
-main() {
-  Future Function() f = () async { print(42); }; // no hint
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_missingReturn_method() async {
     Source source = addSource(r'''
 class A {
@@ -2499,28 +2599,6 @@
     verify([source]);
   }
 
-  test_missingReturn_method_futureOrDynamic() async {
-    Source source = addSource(r'''
-import 'dart:async';
-class A {
-  FutureOr<dynamic> m() {}
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_missingReturn_method_futureOrInt() async {
-    Source source = addSource(r'''
-import 'dart:async';
-class A {
-  FutureOr<int> m() {}
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.MISSING_RETURN]);
-    verify([source]);
-  }
-
   test_missingReturn_method_inferred() async {
     Source source = addSource(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/generated/inheritance_manager_test.dart b/pkg/analyzer/test/generated/inheritance_manager_test.dart
index 41458da..12a0450 100644
--- a/pkg/analyzer/test/generated/inheritance_manager_test.dart
+++ b/pkg/analyzer/test/generated/inheritance_manager_test.dart
@@ -56,9 +56,6 @@
    */
   int _numOfMembersInObject = 0;
 
-  bool get previewDart2 =>
-      _definingLibrary.context.analysisOptions.previewDart2;
-
   void setUp() {
     _typeProvider = new TestTypeProvider();
     _inheritanceManager = _createInheritanceManager();
@@ -356,8 +353,8 @@
         ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
-    MethodElement methodM2 = ElementFactory
-        .methodElement(methodName, null, [_typeProvider.stringType]);
+    MethodElement methodM2 = ElementFactory.methodElement(
+        methodName, null, [_typeProvider.stringType]);
     classI2.methods = <MethodElement>[methodM2];
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
@@ -450,8 +447,8 @@
     // class A implements I2, I1 {}
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName = "m";
-    MethodElement methodM1 = ElementFactory
-        .methodElement(methodName, null, [_typeProvider.stringType]);
+    MethodElement methodM1 = ElementFactory.methodElement(
+        methodName, null, [_typeProvider.stringType]);
     classI1.methods = <MethodElement>[methodM1];
     ClassElementImpl classI2 = ElementFactory.classElement2("I2");
     MethodElement methodM2 =
@@ -573,13 +570,8 @@
         _inheritanceManager.getMembersInheritedFromInterfaces(classA);
     expect(mapA.length, _numOfMembersInObject + 1);
     PropertyAccessorElement syntheticAccessor;
-    if (previewDart2) {
-      syntheticAccessor = ElementFactory.getterElement(
-          accessorName, false, _typeProvider.intType);
-    } else {
-      syntheticAccessor = ElementFactory.getterElement(
-          accessorName, false, _typeProvider.dynamicType);
-    }
+    syntheticAccessor = ElementFactory.getterElement(
+        accessorName, false, _typeProvider.intType);
     expect(mapA[accessorName].type, syntheticAccessor.type);
     _assertNoErrors(classA);
   }
@@ -614,13 +606,8 @@
         _inheritanceManager.getMembersInheritedFromInterfaces(classA);
     expect(mapA.length, _numOfMembersInObject + 1);
     MethodElement syntheticMethod;
-    if (previewDart2) {
-      syntheticMethod = ElementFactory.methodElement(
-          methodName, _typeProvider.dynamicType, [_typeProvider.numType]);
-    } else {
-      syntheticMethod = ElementFactory.methodElement(
-          methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
-    }
+    syntheticMethod = ElementFactory.methodElement(
+        methodName, _typeProvider.dynamicType, [_typeProvider.numType]);
     expect(mapA[methodName].type, syntheticMethod.type);
     _assertNoErrors(classA);
   }
@@ -645,15 +632,9 @@
         _inheritanceManager.getMembersInheritedFromInterfaces(classA);
     expect(mapA.length, _numOfMembersInObject + 1);
     PropertyAccessorElementImpl syntheticAccessor;
-    if (previewDart2) {
-      syntheticAccessor = ElementFactory.setterElement(
-          accessorName, false, _typeProvider.numType);
-      syntheticAccessor.returnType = VoidTypeImpl.instance;
-    } else {
-      syntheticAccessor = ElementFactory.setterElement(
-          accessorName, false, _typeProvider.dynamicType);
-      syntheticAccessor.returnType = _typeProvider.dynamicType;
-    }
+    syntheticAccessor = ElementFactory.setterElement(
+        accessorName, false, _typeProvider.numType);
+    syntheticAccessor.returnType = VoidTypeImpl.instance;
     expect(mapA["$accessorName="].type, syntheticAccessor.type);
     _assertNoErrors(classA);
   }
@@ -693,13 +674,8 @@
         _inheritanceManager.getMembersInheritedFromInterfaces(classD);
     expect(mapD.length, _numOfMembersInObject + 1);
     PropertyAccessorElement syntheticAccessor;
-    if (previewDart2) {
-      syntheticAccessor =
-          ElementFactory.getterElement(accessorName, false, classC.type);
-    } else {
-      syntheticAccessor = ElementFactory.getterElement(
-          accessorName, false, _typeProvider.dynamicType);
-    }
+    syntheticAccessor =
+        ElementFactory.getterElement(accessorName, false, classC.type);
     expect(mapD[accessorName].type, syntheticAccessor.type);
     _assertNoErrors(classD);
   }
@@ -754,13 +730,8 @@
         _inheritanceManager.getMembersInheritedFromInterfaces(classD);
     expect(mapD.length, _numOfMembersInObject + 1);
     MethodElement syntheticMethod;
-    if (previewDart2) {
-      syntheticMethod = ElementFactory
-          .methodElement(methodName, _typeProvider.dynamicType, [classA.type]);
-    } else {
-      syntheticMethod = ElementFactory.methodElement(
-          methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
-    }
+    syntheticMethod = ElementFactory.methodElement(
+        methodName, _typeProvider.dynamicType, [classA.type]);
     expect(mapD[methodName].type, syntheticMethod.type);
     _assertNoErrors(classD);
   }
@@ -800,15 +771,9 @@
         _inheritanceManager.getMembersInheritedFromInterfaces(classD);
     expect(mapD.length, _numOfMembersInObject + 1);
     PropertyAccessorElementImpl syntheticAccessor;
-    if (previewDart2) {
-      syntheticAccessor =
-          ElementFactory.setterElement(accessorName, false, classA.type);
-      syntheticAccessor.returnType = VoidTypeImpl.instance;
-    } else {
-      syntheticAccessor = ElementFactory.setterElement(
-          accessorName, false, _typeProvider.dynamicType);
-      syntheticAccessor.returnType = _typeProvider.dynamicType;
-    }
+    syntheticAccessor =
+        ElementFactory.setterElement(accessorName, false, classA.type);
+    syntheticAccessor.returnType = VoidTypeImpl.instance;
     expect(mapD["$accessorName="].type, syntheticAccessor.type);
     _assertNoErrors(classD);
   }
diff --git a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
index cb43b69..61ad9cc 100644
--- a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
@@ -25,6 +25,18 @@
 
   @override
   @failingTest
+  test_deadCode_afterForEachWithBreakLabel() async {
+    await super.test_deadCode_afterForEachWithBreakLabel();
+  }
+
+  @override
+  @failingTest
+  test_deadCode_afterForWithBreakLabel() async {
+    await super.test_deadCode_afterForWithBreakLabel();
+  }
+
+  @override
+  @failingTest
   test_unusedImport_annotationOnDirective() async {
     await super.test_unusedImport_annotationOnDirective();
   }
diff --git a/pkg/analyzer/test/generated/non_hint_code_test.dart b/pkg/analyzer/test/generated/non_hint_code_test.dart
index 6d2c384..8ac787c 100644
--- a/pkg/analyzer/test/generated/non_hint_code_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_test.dart
@@ -236,6 +236,42 @@
     verify([source]);
   }
 
+  test_deadCode_afterForEachWithBreakLabel() async {
+    Source source = addSource('''
+f() {
+  named: {
+    for (var x in [1]) {
+      if (x == null)
+        break named;
+    }
+    return;
+  }
+  print('not dead');
+}
+''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
+  test_deadCode_afterForWithBreakLabel() async {
+    Source source = addSource('''
+f() {
+  named: {
+    for (int i = 0; i < 7; i++) {
+      if (i == null)
+        break named;
+    }
+    return;
+  }
+  print('not dead');
+}
+''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
   test_deprecatedAnnotationUse_namedParameter_inDefiningFunction() async {
     Source source = addSource(r'''
 f({@deprecated int x}) => x;
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index daa3ac4..82b8b39 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -782,9 +782,9 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token endToken) {
+  void endFunctionType(Token functionToken) {
     end('FunctionType');
-    super.endFunctionType(functionToken, endToken);
+    super.endFunctionType(functionToken);
   }
 
   @override
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index 0024e05..3b5df26 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -2674,7 +2674,6 @@
             expectedError(
                 CompileTimeErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR, 11, 2),
             expectedError(ParserErrorCode.MISSING_IDENTIFIER, 13, 1),
-            expectedError(ParserErrorCode.EXPECTED_TOKEN, 13, 1),
             expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 10, 1),
             expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 13, 1),
           ]
@@ -2694,7 +2693,6 @@
             expectedError(
                 CompileTimeErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR, 11, 6),
             expectedError(ParserErrorCode.MISSING_IDENTIFIER, 17, 1),
-            expectedError(ParserErrorCode.EXPECTED_TOKEN, 17, 1),
             expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 10, 1),
             expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 17, 1)
           ]
@@ -2714,7 +2712,6 @@
             expectedError(
                 CompileTimeErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR, 11, 13),
             expectedError(ParserErrorCode.MISSING_IDENTIFIER, 24, 1),
-            expectedError(ParserErrorCode.EXPECTED_TOKEN, 24, 1),
             expectedError(ParserErrorCode.MISSING_METHOD_PARAMETERS, 10, 1),
             expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 24, 1)
           ]
@@ -6751,7 +6748,7 @@
 
   void test_parseConstExpression_mapLiteral_typed_missingGt() {
     Expression expression = parseExpression('const <A, B {}',
-        errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 1)]);
+        errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 1)]);
     expect(expression, isNotNull);
     var literal = expression as MapLiteral;
     expect(literal.leftBracket, isNotNull);
@@ -7043,20 +7040,17 @@
   void test_parseFunctionExpression_functionInPlaceOfTypeName() {
     Expression expression = parseExpression('<test(' ', (){});>[0, 1, 2]',
         codes: usingFastaParser
-            ? [
-                ParserErrorCode.EXPECTED_TOKEN,
-                ParserErrorCode.UNEXPECTED_TOKEN,
-                ParserErrorCode.MISSING_IDENTIFIER,
-                ParserErrorCode.MISSING_IDENTIFIER,
-                ParserErrorCode.EXPECTED_TOKEN,
-                ParserErrorCode.MISSING_FUNCTION_BODY,
-              ]
+            ? [ParserErrorCode.UNEXPECTED_TOKEN]
             : [
                 ParserErrorCode.EXPECTED_TOKEN,
                 ParserErrorCode.MISSING_IDENTIFIER,
                 ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL,
               ]);
     expect(expression, isNotNull);
+    if (usingFastaParser) {
+      ListLiteral literal = expression;
+      expect(literal.typeArguments.arguments, hasLength(1));
+    }
   }
 
   void test_parseFunctionExpression_typeParameterComments() {
@@ -11281,7 +11275,7 @@
     result[new Symbol(name)] = value;
   });
   return result;
-}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 36, 1)]);
+}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 24)]);
     }
   }
 
@@ -11610,7 +11604,7 @@
     CompilationUnit unit = parseCompilationUnit(r'''
 class C {
   final List<int f;
-}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 27, 1)]);
+}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 23, 3)]);
     // one class
     List<CompilationUnitMember> declarations = unit.declarations;
     expect(declarations, hasLength(1));
@@ -11637,7 +11631,7 @@
   void test_incompleteTypeParameters() {
     CompilationUnit unit = parseCompilationUnit(r'''
 class C<K {
-}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 1)]);
+}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 8, 1)]);
     // one class
     List<CompilationUnitMember> declarations = unit.declarations;
     expect(declarations, hasLength(1));
@@ -11654,7 +11648,7 @@
   void test_incompleteTypeParameters2() {
     CompilationUnit unit = parseCompilationUnit(r'''
 class C<K extends L<T> {
-}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 23, 1)]);
+}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 21, 1)]);
     // one class
     List<CompilationUnitMember> declarations = unit.declarations;
     expect(declarations, hasLength(1));
@@ -11671,10 +11665,13 @@
   void test_incompleteTypeParameters3() {
     CompilationUnit unit = parseCompilationUnit(r'''
 class C<K extends L<T {
-}''', errors: [
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 22, 1),
-      expectedError(ParserErrorCode.EXPECTED_TOKEN, 22, 1)
-    ]);
+}''',
+        errors: usingFastaParser
+            ? [expectedError(ParserErrorCode.EXPECTED_TOKEN, 20, 1)]
+            : [
+                expectedError(ParserErrorCode.EXPECTED_TOKEN, 20, 1),
+                expectedError(ParserErrorCode.EXPECTED_TOKEN, 22, 1)
+              ]);
     // one class
     List<CompilationUnitMember> declarations = unit.declarations;
     expect(declarations, hasLength(1));
@@ -11693,6 +11690,29 @@
         codes: [ParserErrorCode.MISSING_STAR_AFTER_SYNC]);
   }
 
+  void test_invalidMapLiteral() {
+    parseCompilationUnit("class C { var f = Map<A, B> {}; }",
+        codes: usingFastaParser
+            ? [
+                // TODO(danrubel): Improve error message to indicate
+                // that "Map" should be removed.
+                ParserErrorCode.EXPECTED_TOKEN,
+                ParserErrorCode.MISSING_KEYWORD_OPERATOR,
+                ParserErrorCode.MISSING_METHOD_PARAMETERS,
+                ParserErrorCode.EXPECTED_CLASS_MEMBER,
+              ]
+            : [
+                ParserErrorCode.EXPECTED_TOKEN,
+                ParserErrorCode.EXPECTED_CLASS_MEMBER,
+                ParserErrorCode.EXPECTED_CLASS_MEMBER,
+                ParserErrorCode.UNEXPECTED_TOKEN,
+                ParserErrorCode.UNEXPECTED_TOKEN,
+                ParserErrorCode.UNEXPECTED_TOKEN,
+                ParserErrorCode.UNEXPECTED_TOKEN,
+                ParserErrorCode.EXPECTED_EXECUTABLE,
+              ]);
+  }
+
   void test_invalidTypeParameters() {
     CompilationUnit unit = parseCompilationUnit(r'''
 class C {
@@ -17911,7 +17931,119 @@
     assertNoErrors();
     expect(alias.name, isNotNull);
     expect(alias.name.name, 'F');
-    expect(alias.typeParameters, isNotNull);
+    expect(alias.typeParameters.typeParameters, hasLength(1));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters2() {
+    // The scanner creates a single token for `>=`
+    // then the parser must split it into two separate tokens.
+    createParser('typedef F<T>= T Function(T);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(1));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters3() {
+    createParser('typedef F<A,B,C> = Function(A a, B b, C c);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(3));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters3_gtEq() {
+    // The scanner creates a single token for `>=`
+    // then the parser must split it into two separate tokens.
+    createParser('typedef F<A,B,C>=Function(A a, B b, C c);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(3));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters_extends() {
+    createParser('typedef F<A,B,C extends D<E>> = Function(A a, B b, C c);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(3));
+    TypeParameter typeParam = alias.typeParameters.typeParameters[2];
+    NamedType type = typeParam.bound;
+    expect(type.typeArguments.arguments, hasLength(1));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters_extends_gtGtEq() {
+    // The scanner creates a single token for `>>=`
+    // then the parser must split it into three separate tokens.
+    createParser('typedef F<A,B,C extends D<E>>=Function(A a, B b, C c);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(3));
+    TypeParameter typeParam = alias.typeParameters.typeParameters[2];
+    NamedType type = typeParam.bound;
+    expect(type.typeArguments.arguments, hasLength(1));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters_extends3() {
+    createParser(
+        'typedef F<A,B,C extends D<E,G,H>> = Function(A a, B b, C c);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(3));
+    TypeParameter typeParam = alias.typeParameters.typeParameters[2];
+    NamedType type = typeParam.bound;
+    expect(type.typeArguments.arguments, hasLength(3));
+    expect(alias.equals, isNotNull);
+    expect(alias.functionType, isNotNull);
+    expect(alias.semicolon, isNotNull);
+  }
+
+  void test_parseGenericTypeAlias_typeParameters_extends3_gtGtEq() {
+    // The scanner creates a single token for `>>=`
+    // then the parser must split it into three separate tokens.
+    createParser('typedef F<A,B,C extends D<E,G,H>>=Function(A a, B b, C c);');
+    GenericTypeAlias alias = parseFullCompilationUnitMember();
+    expect(alias, isNotNull);
+    assertNoErrors();
+    expect(alias.name, isNotNull);
+    expect(alias.name.name, 'F');
+    expect(alias.typeParameters.typeParameters, hasLength(3));
+    TypeParameter typeParam = alias.typeParameters.typeParameters[2];
+    NamedType type = typeParam.bound;
+    expect(type.typeArguments.arguments, hasLength(3));
     expect(alias.equals, isNotNull);
     expect(alias.functionType, isNotNull);
     expect(alias.semicolon, isNotNull);
diff --git a/pkg/analyzer/test/generated/resolver_test_case.dart b/pkg/analyzer/test/generated/resolver_test_case.dart
index d10680e..e8b7f00 100644
--- a/pkg/analyzer/test/generated/resolver_test_case.dart
+++ b/pkg/analyzer/test/generated/resolver_test_case.dart
@@ -352,7 +352,8 @@
 
   bool get enableNewAnalysisDriver => false;
 
-  bool get previewDart2 => analysisOptions.previewDart2;
+  /// TODO(brianwilkerson) Remove this getter.
+  bool get previewDart2 => true;
 
   /**
    * Return a type provider that can be used to test the results of resolution.
diff --git a/pkg/analyzer/test/generated/sdk_test.dart b/pkg/analyzer/test/generated/sdk_test.dart
index ef34fcc..7761536 100644
--- a/pkg/analyzer/test/generated/sdk_test.dart
+++ b/pkg/analyzer/test/generated/sdk_test.dart
@@ -88,10 +88,8 @@
 
   void test_equals_samePaths_differentOptions() {
     String path = '/a/b/c';
-    AnalysisOptionsImpl leftOptions = new AnalysisOptionsImpl()
-      ..previewDart2 = false;
-    AnalysisOptionsImpl rightOptions = new AnalysisOptionsImpl()
-      ..previewDart2 = true;
+    AnalysisOptionsImpl leftOptions = new AnalysisOptionsImpl()..useCFE = false;
+    AnalysisOptionsImpl rightOptions = new AnalysisOptionsImpl()..useCFE = true;
     SdkDescription left = new SdkDescription(<String>[path], leftOptions);
     SdkDescription right = new SdkDescription(<String>[path], rightOptions);
     expect(left == right, isFalse);
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
index ee10ca0..c8195cd 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
@@ -204,9 +204,8 @@
    */
   TypeProvider _typeProvider;
 
-  AnalysisOptions _analysisOptions;
-
-  bool get previewDart2 => _analysisOptions.previewDart2;
+  /// TODO(brianwilkerson) Remove this getter.
+  bool get previewDart2 => true;
 
   /**
    * The type system used to analyze the test cases.
@@ -1536,7 +1535,6 @@
       context = AnalysisContextFactory.contextWithCore(
           resourceProvider: resourceProvider);
     }
-    _analysisOptions = context.analysisOptions;
     Source source = new FileSource(resourceProvider.getFile("/lib.dart"));
     CompilationUnitElementImpl definingCompilationUnit =
         new CompilationUnitElementImpl("lib.dart");
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
index 0255141..1434544 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
@@ -38,79 +38,6 @@
 
   @override
   @failingTest
-  test_illegalAsyncGeneratorReturnType_function_nonStream() async {
-    await super.test_illegalAsyncGeneratorReturnType_function_nonStream();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncGeneratorReturnType_function_subtypeOfStream() async {
-    await super.test_illegalAsyncGeneratorReturnType_function_subtypeOfStream();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncGeneratorReturnType_method_nonStream() async {
-    await super.test_illegalAsyncGeneratorReturnType_method_nonStream();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncGeneratorReturnType_method_subtypeOfStream() async {
-    await super.test_illegalAsyncGeneratorReturnType_method_subtypeOfStream();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncReturnType_function_nonFuture() async {
-    await super.test_illegalAsyncReturnType_function_nonFuture();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncReturnType_function_subtypeOfFuture() async {
-    await super.test_illegalAsyncReturnType_function_subtypeOfFuture();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncReturnType_method_nonFuture() async {
-    await super.test_illegalAsyncReturnType_method_nonFuture();
-  }
-
-  @override
-  @failingTest
-  test_illegalAsyncReturnType_method_subtypeOfFuture() async {
-    await super.test_illegalAsyncReturnType_method_subtypeOfFuture();
-  }
-
-  @override
-  @failingTest
-  test_illegalSyncGeneratorReturnType_function_nonIterator() async {
-    await super.test_illegalSyncGeneratorReturnType_function_nonIterator();
-  }
-
-  @override
-  @failingTest
-  test_illegalSyncGeneratorReturnType_function_subclassOfIterator() async {
-    await super
-        .test_illegalSyncGeneratorReturnType_function_subclassOfIterator();
-  }
-
-  @override
-  @failingTest
-  test_illegalSyncGeneratorReturnType_method_nonIterator() async {
-    await super.test_illegalSyncGeneratorReturnType_method_nonIterator();
-  }
-
-  @override
-  @failingTest
-  test_illegalSyncGeneratorReturnType_method_subclassOfIterator() async {
-    await super.test_illegalSyncGeneratorReturnType_method_subclassOfIterator();
-  }
-
-  @override
-  @failingTest
   test_instanceAccessToStaticMember_method_invocation() async {
     await super.test_instanceAccessToStaticMember_method_invocation();
   }
diff --git a/pkg/analyzer/test/generated/static_warning_code_test.dart b/pkg/analyzer/test/generated/static_warning_code_test.dart
index 0d7f8c6..c23c7b4 100644
--- a/pkg/analyzer/test/generated/static_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_test.dart
@@ -1456,7 +1456,8 @@
 }''');
     await computeAnalysisResult(source);
     if (useCFE) {
-      assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]);
+      assertErrors(source,
+          [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED]);
     } else {
       assertErrors(source,
           [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED]);
@@ -1471,7 +1472,8 @@
 }''');
     await computeAnalysisResult(source);
     if (useCFE) {
-      assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]);
+      assertErrors(source,
+          [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED]);
     } else {
       assertErrors(source,
           [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED]);
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_kernel_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_kernel_test.dart
index a83d5af..7a79612 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_kernel_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_kernel_test.dart
@@ -44,13 +44,6 @@
 
   @override
   @failingTest
-  @FastaProblem('https://github.com/dart-lang/sdk/issues/33858')
-  test_invalid_fieldInitializer_this() async {
-    await super.test_invalid_fieldInitializer_this();
-  }
-
-  @override
-  @failingTest
   test_methodInvocation_topLevelFunction_generic() async {
     await super.test_methodInvocation_topLevelFunction_generic();
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index 9132542..fe2e68b 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -21,6 +21,7 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(SearchTest);
+    defineReflectiveTests(SearchTest_UseCFE);
   });
 }
 
@@ -1976,3 +1977,107 @@
     expect(matches, unorderedEquals(expectedMatches));
   }
 }
+
+@reflectiveTest
+class SearchTest_UseCFE extends SearchTest {
+  @override
+  bool get useCFE => true;
+
+  @failingTest
+  @override
+  test_classMembers_importNotDart() => super.test_classMembers_importNotDart();
+
+  @failingTest
+  @override
+  test_references_discover() => super.test_references_discover();
+
+  @failingTest
+  @override
+  test_references_discover_onlyOwned() =>
+      super.test_references_discover_onlyOwned();
+
+  @failingTest
+  @override
+  test_searchReferences_ClassElement_definedInSdk_declarationSite() =>
+      super.test_searchReferences_ClassElement_definedInSdk_declarationSite();
+
+  @failingTest
+  @override
+  test_searchReferences_ClassElement_definedInSdk_useSite() =>
+      super.test_searchReferences_ClassElement_definedInSdk_useSite();
+
+  @failingTest
+  @override
+  test_searchReferences_ClassElement_definedInside() =>
+      super.test_searchReferences_ClassElement_definedInside();
+
+  @failingTest
+  @override
+  test_searchReferences_ClassElement_definedOutside() =>
+      super.test_searchReferences_ClassElement_definedOutside();
+
+  @failingTest
+  @override
+  test_searchReferences_FieldElement() =>
+      super.test_searchReferences_FieldElement();
+
+  @failingTest
+  @override
+  test_searchReferences_LabelElement() =>
+      super.test_searchReferences_LabelElement();
+
+  @failingTest
+  @override
+  test_searchReferences_ParameterElement_ofConstructor() =>
+      super.test_searchReferences_ParameterElement_ofConstructor();
+
+  @failingTest
+  @override
+  test_searchReferences_PrefixElement() =>
+      super.test_searchReferences_PrefixElement();
+
+  @failingTest
+  @override
+  test_searchReferences_PrefixElement_inPackage() =>
+      super.test_searchReferences_PrefixElement_inPackage();
+
+  @failingTest
+  @override
+  test_searchReferences_private_declaredInDefiningUnit() =>
+      super.test_searchReferences_private_declaredInDefiningUnit();
+
+  @failingTest
+  @override
+  test_searchReferences_private_declaredInPart() =>
+      super.test_searchReferences_private_declaredInPart();
+
+  @failingTest
+  @override
+  test_searchReferences_private_inPackage() =>
+      super.test_searchReferences_private_inPackage();
+
+  @failingTest
+  @override
+  test_searchReferences_TopLevelVariableElement() =>
+      super.test_searchReferences_TopLevelVariableElement();
+
+  @failingTest
+  @override
+  test_searchReferences_TypeParameterElement_ofClass() =>
+      super.test_searchReferences_TypeParameterElement_ofClass();
+
+  @failingTest
+  @override
+  test_searchReferences_TypeParameterElement_ofMethod() =>
+      super.test_searchReferences_TypeParameterElement_ofMethod();
+
+  @failingTest
+  @override
+  test_searchReferences_TypeParameterElement_ofTopLevelFunction() =>
+      super.test_searchReferences_TypeParameterElement_ofTopLevelFunction();
+
+  @failingTest
+  @override
+  test_subtypes_partWithoutLibrary() =>
+      super.test_subtypes_partWithoutLibrary();
+}
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index fcf092e..a0a25fc 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -53,10 +53,14 @@
  * actual text with the given [expected] one.
  */
 void checkElementText(LibraryElement library, String expected,
-    {bool withOffsets: false,
+    {bool withCodeRanges: false,
+    bool withConstElements: true,
+    bool withOffsets: false,
     bool withSyntheticAccessors: false,
     bool withSyntheticFields: false}) {
   var writer = new _ElementWriter(
+      withCodeRanges: withCodeRanges,
+      withConstElements: withConstElements,
       withOffsets: withOffsets,
       withSyntheticAccessors: withSyntheticAccessors,
       withSyntheticFields: withSyntheticFields);
@@ -120,6 +124,7 @@
  * Writes the canonical text presentation of elements.
  */
 class _ElementWriter {
+  final bool withCodeRanges;
   final bool withOffsets;
   final bool withConstElements;
   final bool withSyntheticAccessors;
@@ -127,9 +132,10 @@
   final StringBuffer buffer = new StringBuffer();
 
   _ElementWriter(
-      {this.withOffsets: false,
+      {this.withCodeRanges,
       this.withConstElements: true,
-      this.withSyntheticAccessors,
+      this.withOffsets: false,
+      this.withSyntheticAccessors: false,
       this.withSyntheticFields: false});
 
   bool isDynamicType(DartType type) => type is DynamicTypeImpl;
@@ -174,6 +180,7 @@
     writeIf(e.isMixinApplication, 'alias ');
 
     writeName(e);
+    writeCodeRange(e);
     writeTypeParameterElements(e.typeParameters);
 
     if (e.supertype != null && e.supertype.displayName != 'Object' ||
@@ -208,6 +215,17 @@
     buffer.writeln('}');
   }
 
+  void writeCodeRange(Element e) {
+    if (withCodeRanges) {
+      var elementImpl = e as ElementImpl;
+      buffer.write('/*codeOffset=');
+      buffer.write(elementImpl.codeOffset);
+      buffer.write(', codeLength=');
+      buffer.write(elementImpl.codeLength);
+      buffer.write('*/');
+    }
+  }
+
   void writeConstructorElement(ConstructorElement e) {
     writeDocumentation(e, '  ');
     writeMetadata(e, '  ', '\n');
@@ -252,9 +270,13 @@
   }
 
   void writeDocumentation(Element e, [String prefix = '']) {
-    if (e.documentationComment != null) {
+    String comment = e.documentationComment;
+    if (comment != null) {
+      if (comment.startsWith('///')) {
+        comment = comment.split('\n').join('\n$prefix');
+      }
       buffer.write(prefix);
-      buffer.writeln(e.documentationComment);
+      buffer.writeln(comment);
     }
   }
 
@@ -460,6 +482,7 @@
     writeType2(e.returnType);
 
     writeName(e);
+    writeCodeRange(e);
 
     writeTypeParameterElements(e.typeParameters);
     writeParameterElements(e.parameters);
@@ -583,6 +606,7 @@
     writeType2(e.returnType);
 
     writeName(e);
+    writeCodeRange(e);
 
     writeTypeParameterElements(e.typeParameters);
     writeParameterElements(e.parameters);
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index 38dd3ef..9aa0713 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -1979,6 +1979,72 @@
 ''');
   }
 
+  test_class_documented_withMetadata() async {
+    var library = await checkLibrary('''
+/// Comment 1
+/// Comment 2
+@Annotation()
+class BeforeMeta {}
+
+/// Comment 1
+/// Comment 2
+@Annotation.named()
+class BeforeMetaNamed {}
+
+@Annotation()
+/// Comment 1
+/// Comment 2
+class AfterMeta {}
+
+/// Comment 1
+@Annotation()
+/// Comment 2
+class AroundMeta {}
+
+/// Doc comment.
+@Annotation()
+// Not doc comment.
+class DocBeforeMetaNotDocAfter {}
+
+class Annotation {
+  const Annotation();
+  const Annotation.named();
+}
+''');
+    checkElementText(
+        library,
+        r'''
+/// Comment 1
+/// Comment 2
+@Annotation()
+class BeforeMeta {
+}
+/// Comment 1
+/// Comment 2
+@Annotation.named()
+class BeforeMetaNamed {
+}
+/// Comment 1
+/// Comment 2
+@Annotation()
+class AfterMeta {
+}
+/// Comment 2
+@Annotation()
+class AroundMeta {
+}
+/// Doc comment.
+@Annotation()
+class DocBeforeMetaNotDocAfter {
+}
+class Annotation {
+  const Annotation();
+  const Annotation.named();
+}
+''',
+        withConstElements: false);
+  }
+
   test_class_field_const() async {
     var library = await checkLibrary('class C { static const int i = 0; }');
     checkElementText(library, r'''
@@ -2478,6 +2544,240 @@
     }
   }
 
+  test_codeRange_class() async {
+    var library = await checkLibrary('''
+class Raw {}
+
+/// Comment 1.
+/// Comment 2.
+class HasDocComment {}
+
+@Object()
+class HasAnnotation {}
+
+@Object()
+/// Comment 1.
+/// Comment 2.
+class AnnotationThenComment {}
+
+/// Comment 1.
+/// Comment 2.
+@Object()
+class CommentThenAnnotation {}
+
+/// Comment 1.
+@Object()
+/// Comment 2.
+class CommentAroundAnnotation {}
+''');
+    checkElementText(
+        library,
+        r'''
+class Raw/*codeOffset=0, codeLength=12*/ {
+}
+/// Comment 1.
+/// Comment 2.
+class HasDocComment/*codeOffset=14, codeLength=52*/ {
+}
+@Object()
+class HasAnnotation/*codeOffset=68, codeLength=32*/ {
+}
+/// Comment 1.
+/// Comment 2.
+@Object()
+class AnnotationThenComment/*codeOffset=102, codeLength=70*/ {
+}
+/// Comment 1.
+/// Comment 2.
+@Object()
+class CommentThenAnnotation/*codeOffset=174, codeLength=70*/ {
+}
+/// Comment 2.
+@Object()
+class CommentAroundAnnotation/*codeOffset=261, codeLength=57*/ {
+}
+''',
+        withCodeRanges: true,
+        withConstElements: false);
+  }
+
+  test_codeRange_class_namedMixin() async {
+    var library = await checkLibrary('''
+class A {}
+
+class B {}
+    
+class Raw = Object with A, B;
+
+/// Comment 1.
+/// Comment 2.
+class HasDocComment = Object with A, B;
+
+@Object()
+class HasAnnotation = Object with A, B;
+
+@Object()
+/// Comment 1.
+/// Comment 2.
+class AnnotationThenComment = Object with A, B;
+
+/// Comment 1.
+/// Comment 2.
+@Object()
+class CommentThenAnnotation = Object with A, B;
+
+/// Comment 1.
+@Object()
+/// Comment 2.
+class CommentAroundAnnotation = Object with A, B;
+''');
+    checkElementText(
+        library,
+        r'''
+class A/*codeOffset=0, codeLength=10*/ {
+}
+class B/*codeOffset=12, codeLength=10*/ {
+}
+class alias Raw/*codeOffset=28, codeLength=29*/ extends Object with A, B {
+  synthetic Raw() = Object;
+}
+/// Comment 1.
+/// Comment 2.
+class alias HasDocComment/*codeOffset=59, codeLength=69*/ extends Object with A, B {
+  synthetic HasDocComment() = Object;
+}
+@Object()
+class alias HasAnnotation/*codeOffset=130, codeLength=49*/ extends Object with A, B {
+  synthetic HasAnnotation() = Object;
+}
+/// Comment 1.
+/// Comment 2.
+@Object()
+class alias AnnotationThenComment/*codeOffset=181, codeLength=87*/ extends Object with A, B {
+  synthetic AnnotationThenComment() = Object;
+}
+/// Comment 1.
+/// Comment 2.
+@Object()
+class alias CommentThenAnnotation/*codeOffset=270, codeLength=87*/ extends Object with A, B {
+  synthetic CommentThenAnnotation() = Object;
+}
+/// Comment 2.
+@Object()
+class alias CommentAroundAnnotation/*codeOffset=374, codeLength=74*/ extends Object with A, B {
+  synthetic CommentAroundAnnotation() = Object;
+}
+''',
+        withCodeRanges: true,
+        withConstElements: false);
+  }
+
+  test_codeRange_function() async {
+    var library = await checkLibrary('''
+void raw() {}
+
+/// Comment 1.
+/// Comment 2.
+void hasDocComment() {}
+
+@Object()
+void hasAnnotation() {}
+
+@Object()
+/// Comment 1.
+/// Comment 2.
+void annotationThenComment() {}
+
+/// Comment 1.
+/// Comment 2.
+@Object()
+void commentThenAnnotation() {}
+
+/// Comment 1.
+@Object()
+/// Comment 2.
+void commentAroundAnnotation() {}
+''');
+    checkElementText(
+        library,
+        r'''
+void raw/*codeOffset=0, codeLength=13*/() {}
+/// Comment 1.
+/// Comment 2.
+void hasDocComment/*codeOffset=15, codeLength=53*/() {}
+@Object()
+void hasAnnotation/*codeOffset=70, codeLength=33*/() {}
+/// Comment 1.
+/// Comment 2.
+@Object()
+void annotationThenComment/*codeOffset=105, codeLength=71*/() {}
+/// Comment 1.
+/// Comment 2.
+@Object()
+void commentThenAnnotation/*codeOffset=178, codeLength=71*/() {}
+/// Comment 2.
+@Object()
+void commentAroundAnnotation/*codeOffset=266, codeLength=58*/() {}
+''',
+        withCodeRanges: true,
+        withConstElements: false);
+  }
+
+  test_codeRange_method() async {
+    var library = await checkLibrary('''
+class C {
+  void raw() {}
+  
+  /// Comment 1.
+  /// Comment 2.
+  void hasDocComment() {}
+  
+  @Object()
+  void hasAnnotation() {}
+  
+  @Object()
+  /// Comment 1.
+  /// Comment 2.
+  void annotationThenComment() {}
+  
+  /// Comment 1.
+  /// Comment 2.
+  @Object()
+  void commentThenAnnotation() {}
+  
+  /// Comment 1.
+  @Object()
+  /// Comment 2.
+  void commentAroundAnnotation() {}
+}
+''');
+    checkElementText(
+        library,
+        r'''
+class C/*codeOffset=0, codeLength=382*/ {
+  void raw/*codeOffset=12, codeLength=13*/() {}
+  /// Comment 1.
+  /// Comment 2.
+  void hasDocComment/*codeOffset=31, codeLength=57*/() {}
+  @Object()
+  void hasAnnotation/*codeOffset=94, codeLength=35*/() {}
+  /// Comment 1.
+  /// Comment 2.
+  @Object()
+  void annotationThenComment/*codeOffset=135, codeLength=77*/() {}
+  /// Comment 1.
+  /// Comment 2.
+  @Object()
+  void commentThenAnnotation/*codeOffset=218, codeLength=77*/() {}
+  /// Comment 2.
+  @Object()
+  void commentAroundAnnotation/*codeOffset=318, codeLength=62*/() {}
+}
+''',
+        withCodeRanges: true,
+        withConstElements: false);
+  }
+
   test_const_constructor_inferred_args() async {
     if (!isStrongMode) return;
     var library = await checkLibrary('''
diff --git a/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart b/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
index 46ad634..4e30ddc 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
@@ -12,15 +12,13 @@
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
 import 'package:analyzer/src/dart/analysis/frontend_resolution.dart';
+import 'package:analyzer/src/dart/analysis/kernel_context.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/kernel/resynthesize.dart';
 import 'package:front_end/src/api_prototype/byte_store.dart';
 import 'package:front_end/src/base/performance_logger.dart';
-import 'package:kernel/kernel.dart' as kernel;
-import 'package:kernel/text/ast_to_text.dart' as kernel;
-import 'package:kernel/type_environment.dart' as kernel;
 import 'package:test/src/frontend/expect.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -46,8 +44,6 @@
 
 @reflectiveTest
 class ResynthesizeTest_Kernel extends ResynthesizeTest {
-  static const DEBUG = false;
-
   final resourceProvider = new MemoryResourceProvider();
 
   @override
@@ -286,33 +282,6 @@
 
     LibraryCompilationResult libraryResult = await compiler.compile(testUri);
 
-    // Remember Kernel libraries produced by the compiler.
-    var lineInfoMap = <String, LineInfo>{};
-    var libraryMap = <String, kernel.Library>{};
-    var libraryExistMap = <String, bool>{};
-    for (var library in libraryResult.component.libraries) {
-      String uriStr = library.importUri.toString();
-      FileState file = fsState.getFileForUri(library.importUri);
-      lineInfoMap[uriStr] = file?.lineInfo ?? new LineInfo([0]);
-      libraryMap[uriStr] = library;
-      libraryExistMap[uriStr] = file?.exists ?? false;
-    }
-
-    if (DEBUG) {
-      String testUriStr = testUri.toString();
-      var library = libraryMap[testUriStr];
-      print(_getLibraryText(library));
-    }
-
-    var resynthesizer = new KernelResynthesizer(
-        context, lineInfoMap, libraryMap, libraryExistMap);
-    return resynthesizer;
-  }
-
-  String _getLibraryText(kernel.Library library) {
-    StringBuffer buffer = new StringBuffer();
-    new kernel.Printer(buffer, syntheticNames: new kernel.NameSystem())
-        .writeLibraryFile(library);
-    return buffer.toString();
+    return KernelContext.buildResynthesizer(fsState, libraryResult, context);
   }
 }
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index 9b1a748..4f0a651 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -579,7 +579,7 @@
 analyzer:
   language:
     unsupported: true
-''', [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES]);
+''', [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE]);
   }
 
   test_analyzer_language_unsupported_value() {
diff --git a/pkg/analyzer/tool/analyzer_cfe_progress.dart b/pkg/analyzer/tool/analyzer_cfe_progress.dart
index efd525f..86783f6 100644
--- a/pkg/analyzer/tool/analyzer_cfe_progress.dart
+++ b/pkg/analyzer/tool/analyzer_cfe_progress.dart
@@ -14,9 +14,6 @@
 import 'package:analyzer/file_system/physical_file_system.dart';
 import 'package:path/path.dart' as path;
 
-// TODO(devoncarew): Convert the commented out code below to a --verbose option,
-// emitting failing tests in a markdown ready format?
-
 /// Count failing Analyzer CFE integration tests.
 ///
 /// We look for classes ending in *Test_UseCFE or *Test_Kernel with test
@@ -90,18 +87,22 @@
         }
 
         totalFailingCount += failingCount;
-
-        //if (failingCount > 0) {
-        //  print('  ${member.name}, $failingCount failing tests');
-        //}
       }
     }
 
     print('  $totalFailingCount failing tests');
   }
 
+  // tests/language_2/language_2_analyzer.status:
+  //   [ $compiler == dart2analyzer && $fasta ]
+  print('\nCFE tests for tests/language_2:');
+  int useCfeLanguage2 = countExclusions(
+      'tests/language_2/language_2_analyzer.status',
+      r'[ $compiler == dart2analyzer && $fasta ]');
+  print('  $useCfeLanguage2 failing tests');
+
   // Also count the Fasta '-DuseFastaParser=true' tests.
-  print('\n--use-fasta-parser excusions from status files');
+  print('\n--use-fasta-parser exclusions from status files');
 
   int testExclusions = 0;
 
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index be06135..4dd6d1a 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -456,7 +456,7 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
+  void handleType(Token beginToken) {
     debugEvent("Type");
     List<TypeName> typeArguments = popTypedList();
     String name = pop();
diff --git a/pkg/analyzer_cli/lib/src/context_cache.dart b/pkg/analyzer_cli/lib/src/context_cache.dart
index 9354f84..6cec179 100644
--- a/pkg/analyzer_cli/lib/src/context_cache.dart
+++ b/pkg/analyzer_cli/lib/src/context_cache.dart
@@ -99,6 +99,7 @@
     contextOptions.useFastaParser = clOptions.useFastaParser;
     if (clOptions.useCFE) {
       contextOptions.useFastaParser = true;
+      contextOptions.useCFE = true;
     }
     return contextOptions;
   }
diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart
index b95df0d..9b5fd17 100644
--- a/pkg/analyzer_cli/lib/src/options.dart
+++ b/pkg/analyzer_cli/lib/src/options.dart
@@ -114,7 +114,9 @@
   final bool useFastaParser;
 
   /// Whether to enable the Dart 2.0 Preview.
-  final bool previewDart2;
+  ///
+  /// This flag is deprecated and hard-coded to `true`.
+  bool get previewDart2 => true;
 
   /// Batch mode (for unit testing)
   final bool batchMode;
@@ -189,7 +191,6 @@
         perfReport = cast(args['x-perf-report']),
         useCFE = cast(args['use-cfe']),
         useFastaParser = cast(args['use-fasta-parser']),
-        previewDart2 = cast(args['preview-dart-2']),
         batchMode = cast(args['batch']),
         showPackageWarnings = cast(args['show-package-warnings']) ||
             cast(args['package-warnings']) ||
diff --git a/pkg/analyzer_cli/test/options_test.dart b/pkg/analyzer_cli/test/options_test.dart
index 52e576e..621cefb 100644
--- a/pkg/analyzer_cli/test/options_test.dart
+++ b/pkg/analyzer_cli/test/options_test.dart
@@ -254,12 +254,6 @@
             CommandLineOptions.parse(['--preview-dart-2', 'foo.dart']);
         expect(options.previewDart2, isTrue);
       });
-
-      test('--no-preview-dart-2', () {
-        CommandLineOptions options =
-            CommandLineOptions.parse(['--no-preview-dart-2', 'foo.dart']);
-        expect(options.previewDart2, isFalse);
-      });
     });
   });
   defineReflectiveTests(CommandLineOptionsTest);
diff --git a/pkg/analyzer_plugin/analysis_options.yaml b/pkg/analyzer_plugin/analysis_options.yaml
index 447862b..7e84b0f 100644
--- a/pkg/analyzer_plugin/analysis_options.yaml
+++ b/pkg/analyzer_plugin/analysis_options.yaml
@@ -1,3 +1,6 @@
+analyzer:
+  strong-mode:
+    implicit-casts: false
 linter:
   rules:
     - annotate_overrides
diff --git a/pkg/analyzer_plugin/doc/tutorial/completion.md b/pkg/analyzer_plugin/doc/tutorial/completion.md
index 3776713..18b1698 100644
--- a/pkg/analyzer_plugin/doc/tutorial/completion.md
+++ b/pkg/analyzer_plugin/doc/tutorial/completion.md
@@ -61,7 +61,7 @@
 ```dart
 class MyCompletionContributor implements CompletionContributor {
   @override
-  Future<Null> computeSuggestions(DartCompletionRequest request,
+  Future<void> computeSuggestions(DartCompletionRequest request,
       CompletionCollector collector) async {
     // ...
   }
diff --git a/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart b/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart
index 1ba1714..20eea1d 100644
--- a/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart
@@ -44,7 +44,8 @@
     AssistRequest request = await getAssistRequest(parameters);
     AssistGenerator generator =
         new AssistGenerator(getAssistContributors(path));
-    GeneratorResult result = await generator.generateAssistsResponse(request);
+    GeneratorResult<EditGetAssistsResult> result =
+        await generator.generateAssistsResponse(request);
     result.sendNotifications(channel);
     return result.result;
   }
diff --git a/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart b/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
index 8b45068..21bfe52 100644
--- a/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
@@ -45,7 +45,7 @@
     CompletionRequest request = await getCompletionRequest(parameters);
     CompletionGenerator generator =
         new CompletionGenerator(getCompletionContributors(path));
-    GeneratorResult result =
+    GeneratorResult<CompletionGetSuggestionsResult> result =
         await generator.generateCompletionResponse(request);
     result.sendNotifications(channel);
     return result.result;
diff --git a/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart b/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart
index 16899f4..11731c1 100644
--- a/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart
@@ -76,7 +76,8 @@
     String path = parameters.file;
     FixesRequest request = await getFixesRequest(parameters);
     FixGenerator generator = new FixGenerator(getFixContributors(path));
-    GeneratorResult result = await generator.generateFixesResponse(request);
+    GeneratorResult<EditGetFixesResult> result =
+        await generator.generateFixesResponse(request);
     result.sendNotifications(channel);
     return result.result;
   }
diff --git a/pkg/analyzer_plugin/lib/plugin/folding_mixin.dart b/pkg/analyzer_plugin/lib/plugin/folding_mixin.dart
index 6f90671..02d96d7 100644
--- a/pkg/analyzer_plugin/lib/plugin/folding_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/folding_mixin.dart
@@ -55,7 +55,7 @@
   Future<FoldingRequest> getFoldingRequest(String path);
 
   @override
-  Future<Null> sendFoldingNotification(String path) async {
+  Future<void> sendFoldingNotification(String path) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
diff --git a/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart b/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart
index 01b7ed8..49a1e58 100644
--- a/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart
@@ -55,7 +55,7 @@
   Future<HighlightsRequest> getHighlightsRequest(String path);
 
   @override
-  Future<Null> sendHighlightsNotification(String path) async {
+  Future<void> sendHighlightsNotification(String path) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
diff --git a/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart b/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart
index 6f96c1d..1e59cb7 100644
--- a/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart
@@ -65,7 +65,7 @@
     String path = parameters.file;
     EntryRequest request = await getEntryRequest(parameters);
     EntryGenerator generator = new EntryGenerator(getEntryContributors(path));
-    GeneratorResult result =
+    GeneratorResult<KytheGetKytheEntriesResult> result =
         await generator.generateGetEntriesResponse(request);
     result.sendNotifications(channel);
     return result.result;
diff --git a/pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart b/pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart
index 86b6f0c..b81b3b6 100644
--- a/pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart
@@ -74,7 +74,7 @@
     NavigationRequest request = await getNavigationRequest(parameters);
     NavigationGenerator generator =
         new NavigationGenerator(getNavigationContributors(path));
-    GeneratorResult result =
+    GeneratorResult<AnalysisGetNavigationResult> result =
         await generator.generateNavigationResponse(request);
     result.sendNotifications(channel);
     return result.result;
@@ -85,7 +85,7 @@
    * server.
    */
   @override
-  Future<Null> sendNavigationNotification(String path) async {
+  Future<void> sendNavigationNotification(String path) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
diff --git a/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart b/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart
index dfb95d4..fb4eda6 100644
--- a/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart
@@ -55,7 +55,7 @@
   Future<OccurrencesRequest> getOccurrencesRequest(String path);
 
   @override
-  Future<Null> sendOccurrencesNotification(String path) async {
+  Future<void> sendOccurrencesNotification(String path) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
diff --git a/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart b/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart
index 23506fd..e9e7c16 100644
--- a/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart
@@ -55,7 +55,7 @@
   Future<OutlineRequest> getOutlineRequest(String path);
 
   @override
-  Future<Null> sendOutlineNotification(String path) async {
+  Future<void> sendOutlineNotification(String path) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     try {
diff --git a/pkg/analyzer_plugin/lib/plugin/plugin.dart b/pkg/analyzer_plugin/lib/plugin/plugin.dart
index 7a6e478..5773045 100644
--- a/pkg/analyzer_plugin/lib/plugin/plugin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/plugin.dart
@@ -520,7 +520,7 @@
    * If the plugin provides folding information, send a folding notification
    * for the file with the given [path] to the server.
    */
-  Future<Null> sendFoldingNotification(String path) {
+  Future<void> sendFoldingNotification(String path) {
     return new Future.value();
   }
 
@@ -528,7 +528,7 @@
    * If the plugin provides highlighting information, send a highlights
    * notification for the file with the given [path] to the server.
    */
-  Future<Null> sendHighlightsNotification(String path) {
+  Future<void> sendHighlightsNotification(String path) {
     return new Future.value();
   }
 
@@ -536,7 +536,7 @@
    * If the plugin provides navigation information, send a navigation
    * notification for the file with the given [path] to the server.
    */
-  Future<Null> sendNavigationNotification(String path) {
+  Future<void> sendNavigationNotification(String path) {
     return new Future.value();
   }
 
@@ -576,7 +576,7 @@
    * If the plugin provides occurrences information, send an occurrences
    * notification for the file with the given [path] to the server.
    */
-  Future<Null> sendOccurrencesNotification(String path) {
+  Future<void> sendOccurrencesNotification(String path) {
     return new Future.value();
   }
 
@@ -584,7 +584,7 @@
    * If the plugin provides outline information, send an outline notification
    * for the file with the given [path] to the server.
    */
-  Future<Null> sendOutlineNotification(String path) {
+  Future<void> sendOutlineNotification(String path) {
     return new Future.value();
   }
 
@@ -699,7 +699,7 @@
    * The method that is called when a [request] is received from the analysis
    * server.
    */
-  Future<Null> _onRequest(Request request) async {
+  Future<void> _onRequest(Request request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     int requestTime = new DateTime.now().millisecondsSinceEpoch;
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol.dart b/pkg/analyzer_plugin/lib/protocol/protocol.dart
index 708b4f2..ffb622b 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol.dart
@@ -57,7 +57,7 @@
    * Initialize a newly created instance based on the given JSON data.
    */
   factory Notification.fromJson(Map json) {
-    return new Notification(json[Notification.EVENT],
+    return new Notification(json[Notification.EVENT] as String,
         json[Notification.PARAMS] as Map<String, Object>);
   }
 
@@ -164,7 +164,8 @@
     }
     var params = result[Request.PARAMS];
     if (params is Map || params == null) {
-      return new Request(id, method, params as Map<String, Object>, time);
+      return new Request(id as String, method as String,
+          params as Map<String, Object>, time as int);
     } else {
       return null;
     }
@@ -302,7 +303,7 @@
   /**
    * Return a request error representing an error that occurred in the plugin.
    */
-  static RequestError pluginError(exception, String stackTrace) =>
+  static RequestError pluginError(dynamic exception, String stackTrace) =>
       new RequestError(RequestErrorCode.PLUGIN_ERROR, exception.toString(),
           stackTrace: stackTrace);
 
@@ -417,7 +418,7 @@
       if (result is Map) {
         decodedResult = result as Map<String, Object>;
       }
-      return new Response(id, requestTime,
+      return new Response(id as String, requestTime as int,
           error: decodedError, result: decodedResult);
     } catch (exception) {
       return null;
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_common.dart b/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
index b35ce82..f696947 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
@@ -1480,12 +1480,12 @@
   static const int FLAG_DEPRECATED = 0x20;
 
   static int makeFlags(
-      {isAbstract: false,
-      isConst: false,
-      isFinal: false,
-      isStatic: false,
-      isPrivate: false,
-      isDeprecated: false}) {
+      {bool isAbstract: false,
+      bool isConst: false,
+      bool isFinal: false,
+      bool isStatic: false,
+      bool isPrivate: false,
+      bool isDeprecated: false}) {
     int flags = 0;
     if (isAbstract) flags |= FLAG_ABSTRACT;
     if (isConst) flags |= FLAG_CONST;
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart b/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart
index 421beca..d0c1816 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart
@@ -1759,7 +1759,7 @@
       if (json.containsKey("files")) {
         files = jsonDecoder.decodeMap(jsonPath + ".files", json["files"],
             valueDecoder: (String jsonPath, Object json) =>
-                jsonDecoder.decodeUnion(jsonPath, json, "type", {
+                jsonDecoder.decodeUnion(jsonPath, json as Map, "type", {
                   "add": (String jsonPath, Object json) =>
                       new AddContentOverlay.fromJson(
                           jsonDecoder, jsonPath, json),
diff --git a/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart b/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart
index 0014a4c..bcbc4d3 100644
--- a/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart
+++ b/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart
@@ -226,7 +226,7 @@
   }
 
   @override
-  Future<Null> listen(void onResponse(Response response),
+  Future<void> listen(void onResponse(Response response),
       void onNotification(Notification notification),
       {void onError(dynamic error), void onDone()}) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
@@ -264,7 +264,7 @@
       close();
       return null;
     }
-    Completer<Null> channelReady = new Completer<Null>();
+    Completer<void> channelReady = new Completer<void>();
     _receivePort.listen((dynamic input) {
       if (input is SendPort) {
         _sendPort = input;
diff --git a/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart b/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart
index 5778af8..993b86f 100644
--- a/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart
+++ b/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart
@@ -229,7 +229,7 @@
  * string describing the part of the JSON object being decoded, and [value] is
  * the part to decode.
  */
-typedef E JsonDecoderCallback<E>(String jsonPath, Object value);
+typedef E JsonDecoderCallback<E>(String jsonPath, dynamic value);
 
 /**
  * Instances of the class [HasToJson] implement [toJson] method that returns
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart
index b5c3e8d..2e84997 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart
@@ -61,7 +61,7 @@
   }
 
   @override
-  Future<Null> addFileEdit(
+  Future<void> addFileEdit(
       String path, void buildFileEdit(FileEditBuilder builder)) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -343,7 +343,7 @@
   /**
    * Finalize the source file edit that is being built.
    */
-  Future<Null> finalize() async {
+  Future<void> finalize() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     // Nothing to do.
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
index 05d094d..ce39f06 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
@@ -41,7 +41,7 @@
   DartChangeBuilderImpl(this.session);
 
   @override
-  Future<Null> addFileEdit(
+  Future<void> addFileEdit(
       String path, void buildFileEdit(DartFileEditBuilder builder),
       {ImportPrefixGenerator importPrefixGenerator}) {
     return super.addFileEdit(path, (builder) {
@@ -100,12 +100,14 @@
       DartFileEditBuilderImpl sourceFileEditBuilder, int offset, int length)
       : super(sourceFileEditBuilder, offset, length);
 
-  DartFileEditBuilderImpl get dartFileEditBuilder => fileEditBuilder;
+  DartFileEditBuilderImpl get dartFileEditBuilder =>
+      fileEditBuilder as DartFileEditBuilderImpl;
 
   @override
   void addLinkedEdit(String groupName,
           void buildLinkedEdit(DartLinkedEditBuilder builder)) =>
-      super.addLinkedEdit(groupName, (builder) => buildLinkedEdit(builder));
+      super.addLinkedEdit(groupName,
+          (builder) => buildLinkedEdit(builder as DartLinkedEditBuilder));
 
   @override
   LinkedEditBuilderImpl createLinkedEditBuilder() {
@@ -1124,12 +1126,14 @@
 
   @override
   void addInsertion(int offset, void buildEdit(DartEditBuilder builder)) =>
-      super.addInsertion(offset, (builder) => buildEdit(builder));
+      super.addInsertion(
+          offset, (builder) => buildEdit(builder as DartEditBuilder));
 
   @override
   void addReplacement(
           SourceRange range, void buildEdit(DartEditBuilder builder)) =>
-      super.addReplacement(range, (builder) => buildEdit(builder));
+      super.addReplacement(
+          range, (builder) => buildEdit(builder as DartEditBuilder));
 
   @override
   void convertFunctionFromSyncToAsync(
@@ -1150,7 +1154,7 @@
   }
 
   @override
-  Future<Null> finalize() async {
+  Future<void> finalize() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (librariesToImport.isNotEmpty) {
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index b81dfad..4989a68 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -125,8 +125,7 @@
     if (optype.includeReturnValueSuggestions) {
       // Careful: in angular plugin, `target.unit` may be null!
       CompilationUnitElement unitElement = target.unit?.declaredElement;
-      if (unitElement != null &&
-          unitElement.context.analysisOptions.previewDart2) {
+      if (unitElement != null) {
         optype.includeConstructorSuggestions = true;
       }
     }
@@ -319,7 +318,7 @@
           index = node.arguments.length - 1;
         }
       } else {
-        index = node.arguments.indexOf(entity);
+        index = node.arguments.indexOf(entity as Expression);
       }
       if (0 <= index && index < parameters.length) {
         ParameterElement param = parameters[index];
diff --git a/pkg/analyzer_plugin/lib/utilities/assist/assist.dart b/pkg/analyzer_plugin/lib/utilities/assist/assist.dart
index 16f713a..7f4a8c4 100644
--- a/pkg/analyzer_plugin/lib/utilities/assist/assist.dart
+++ b/pkg/analyzer_plugin/lib/utilities/assist/assist.dart
@@ -57,7 +57,8 @@
    * by the given [request]. If any of the contributors throws an exception,
    * also create a non-fatal 'plugin.error' notification.
    */
-  GeneratorResult generateAssistsResponse(AssistRequest request) {
+  GeneratorResult<EditGetAssistsResult> generateAssistsResponse(
+      AssistRequest request) {
     List<Notification> notifications = <Notification>[];
     AssistCollectorImpl collector = new AssistCollectorImpl();
     for (AssistContributor contributor in contributors) {
diff --git a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_core.dart b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_core.dart
index dd37c1b..1cf0a40 100644
--- a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_core.dart
+++ b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_core.dart
@@ -36,7 +36,7 @@
    * file with the given [path]. The edits will be added to the source change
    * that is being built.
    */
-  Future<Null> addFileEdit(
+  Future<void> addFileEdit(
       String path, void buildFileEdit(FileEditBuilder builder));
 
   /**
diff --git a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
index 4cd16ae..d6e0b8e 100644
--- a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
@@ -38,7 +38,7 @@
    * import prefix for every newly imported library.
    */
   @override
-  Future<Null> addFileEdit(
+  Future<void> addFileEdit(
       String path, void buildFileEdit(DartFileEditBuilder builder),
       {ImportPrefixGenerator importPrefixGenerator});
 }
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart b/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart
index 691a179..0d3b55d 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart
@@ -72,7 +72,7 @@
    * Contribute completion suggestions for the completion location specified by
    * the given [request] into the given [collector].
    */
-  Future<Null> computeSuggestions(
+  Future<void> computeSuggestions(
       covariant CompletionRequest request, CompletionCollector collector);
 }
 
@@ -97,8 +97,8 @@
    * [path]. If any of the contributors throws an exception, also create a
    * non-fatal 'plugin.error' notification.
    */
-  Future<GeneratorResult> generateCompletionResponse(
-      CompletionRequest request) async {
+  Future<GeneratorResult<CompletionGetSuggestionsResult>>
+      generateCompletionResponse(CompletionRequest request) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     List<Notification> notifications = <Notification>[];
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart b/pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart
index 4cdc185..46da042a 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart
@@ -40,7 +40,7 @@
    * call on `computeSuggestionsForClass`.
    */
   @override
-  Future<Null> computeSuggestions(
+  Future<void> computeSuggestions(
       DartCompletionRequest request, CompletionCollector collector) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -62,7 +62,7 @@
   /**
    * Clients should not overload this function.
    */
-  Future<Null> computeSuggestionsForClass(
+  Future<void> computeSuggestionsForClass(
     DartCompletionRequest request,
     CompletionCollector collector,
     ClassElement classElement, {
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
index 7b33b19..7abeec9 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
@@ -29,7 +29,7 @@
    * call on `computeSuggestionsWithEntryPoint`.
    */
   @override
-  Future<Null> computeSuggestions(
+  Future<void> computeSuggestions(
       DartCompletionRequest request, CompletionCollector collector) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -51,7 +51,7 @@
   /**
    * Clients should not overload this function.
    */
-  Future<Null> computeSuggestionsWithEntryPoint(DartCompletionRequest request,
+  Future<void> computeSuggestionsWithEntryPoint(DartCompletionRequest request,
       CompletionCollector collector, AstNode entryPoint) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
diff --git a/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart b/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart
index 3fc7fde7..a25963c 100644
--- a/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart
+++ b/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart
@@ -92,7 +92,8 @@
    * by the given [request]. If any of the contributors throws an exception,
    * also create a non-fatal 'plugin.error' notification.
    */
-  GeneratorResult generateFixesResponse(FixesRequest request) {
+  GeneratorResult<EditGetFixesResult> generateFixesResponse(
+      FixesRequest request) {
     List<Notification> notifications = <Notification>[];
     FixCollectorImpl collector = new FixCollectorImpl();
     for (FixContributor contributor in contributors) {
diff --git a/pkg/analyzer_plugin/lib/utilities/generator.dart b/pkg/analyzer_plugin/lib/utilities/generator.dart
index 30d27b1..7b7989a 100644
--- a/pkg/analyzer_plugin/lib/utilities/generator.dart
+++ b/pkg/analyzer_plugin/lib/utilities/generator.dart
@@ -11,12 +11,12 @@
  *
  * Clients may not extend, implement or mix-in this class.
  */
-class GeneratorResult {
+class GeneratorResult<T extends ResponseResult> {
   /**
    * The result to be sent to the server, or `null` if there is no response, as
    * when the generator is generating a notification.
    */
-  final ResponseResult result;
+  final T result;
 
   /**
    * The notifications that should be sent to the server. The list will be empty
diff --git a/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart b/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart
index 5571efd..f4eddab 100644
--- a/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart
+++ b/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart
@@ -69,7 +69,8 @@
    * [request]. If any of the contributors throws an exception, also create a
    * non-fatal 'plugin.error' notification.
    */
-  GeneratorResult generateGetEntriesResponse(EntryRequest request) {
+  GeneratorResult<KytheGetKytheEntriesResult> generateGetEntriesResponse(
+      EntryRequest request) {
     List<Notification> notifications = <Notification>[];
     EntryCollectorImpl collector = new EntryCollectorImpl();
     for (EntryContributor contributor in contributors) {
diff --git a/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart b/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart
index 462448b..6662ade 100644
--- a/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart
+++ b/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart
@@ -107,7 +107,8 @@
    * specified by the given [request]. If any of the contributors throws an
    * exception, also create a non-fatal 'plugin.error' notification.
    */
-  GeneratorResult generateNavigationResponse(NavigationRequest request) {
+  GeneratorResult<AnalysisGetNavigationResult> generateNavigationResponse(
+      NavigationRequest request) {
     List<Notification> notifications = <Notification>[];
     NavigationCollectorImpl collector = new NavigationCollectorImpl();
     for (NavigationContributor contributor in contributors) {
diff --git a/pkg/analyzer_plugin/test/integration/support/integration_tests.dart b/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
index 52740b2..d672f7b 100644
--- a/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
+++ b/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
@@ -391,7 +391,7 @@
       if (requiredFields != null && requiredFields.containsKey(key)) {
         // Already checked this field
       } else if (optionalFields != null && optionalFields.containsKey(key)) {
-        _checkField(key, value, optionalFields[key], mismatches);
+        _checkField(key as String, value, optionalFields[key], mismatches);
       } else {
         mismatches.add((Description mismatchDescription) => mismatchDescription
             .add('has unexpected field ')
@@ -572,7 +572,8 @@
         // params.
         outOfTestExpect(messageAsMap, contains('event'));
         outOfTestExpect(messageAsMap['event'], isString);
-        notificationProcessor(messageAsMap['event'], messageAsMap['params']);
+        notificationProcessor(
+            messageAsMap['event'] as String, messageAsMap['params']);
         // Check that the message is well-formed.  We do this after calling
         // notificationController.add() so that we don't stall the test in the
         // event of an error.
@@ -751,7 +752,7 @@
    */
   final Matcher iterableMatcher;
 
-  _ListOf(elementMatcher)
+  _ListOf(Matcher elementMatcher)
       : elementMatcher = elementMatcher,
         iterableMatcher = everyElement(elementMatcher);
 
diff --git a/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart
index acd15aa..99641a7 100644
--- a/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart
@@ -64,7 +64,7 @@
   _TestCompletionContributor(this.suggestions);
 
   @override
-  Future<Null> computeSuggestions(
+  Future<void> computeSuggestions(
       CompletionRequest request, CompletionCollector collector) async {
     if ((collector as CompletionCollectorImpl).offset == null) {
       collector.offset = 1;
diff --git a/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart
index cedc947..862eccb 100644
--- a/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart
@@ -51,7 +51,7 @@
     await plugin.handleAnalysisSetContextRoots(
         new AnalysisSetContextRootsParams([contextRoot1]));
 
-    Completer<Null> notificationReceived = new Completer<Null>();
+    Completer<void> notificationReceived = new Completer<void>();
     channel.listen(null, onNotification: (Notification notification) {
       expect(notification, isNotNull);
       AnalysisFoldingParams params =
diff --git a/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart
index 992446f..30afb9e 100644
--- a/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart
@@ -51,7 +51,7 @@
     await plugin.handleAnalysisSetContextRoots(
         new AnalysisSetContextRootsParams([contextRoot1]));
 
-    Completer<Null> notificationReceived = new Completer<Null>();
+    Completer<void> notificationReceived = new Completer<void>();
     channel.listen(null, onNotification: (Notification notification) {
       expect(notification, isNotNull);
       AnalysisHighlightsParams params =
diff --git a/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart
index 35794aee..4443939 100644
--- a/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart
@@ -64,7 +64,7 @@
     await plugin.handleAnalysisSetContextRoots(
         new AnalysisSetContextRootsParams([contextRoot1]));
 
-    Completer<Null> notificationReceived = new Completer<Null>();
+    Completer<void> notificationReceived = new Completer<void>();
     channel.listen(null, onNotification: (Notification notification) {
       expect(notification, isNotNull);
       AnalysisNavigationParams params =
diff --git a/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart
index a3c076e..14b1663 100644
--- a/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart
@@ -51,7 +51,7 @@
     await plugin.handleAnalysisSetContextRoots(
         new AnalysisSetContextRootsParams([contextRoot1]));
 
-    Completer<Null> notificationReceived = new Completer<Null>();
+    Completer<void> notificationReceived = new Completer<void>();
     channel.listen(null, onNotification: (Notification notification) {
       expect(notification, isNotNull);
       AnalysisOccurrencesParams params =
diff --git a/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart
index 70d7620..d9eaba3 100644
--- a/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart
@@ -51,7 +51,7 @@
     await plugin.handleAnalysisSetContextRoots(
         new AnalysisSetContextRootsParams([contextRoot1]));
 
-    Completer<Null> notificationReceived = new Completer<Null>();
+    Completer<void> notificationReceived = new Completer<void>();
     channel.listen(null, onNotification: (Notification notification) {
       expect(notification, isNotNull);
       AnalysisOutlineParams params =
diff --git a/pkg/analyzer_plugin/test/plugin/plugin_test.dart b/pkg/analyzer_plugin/test/plugin/plugin_test.dart
index 8d0213d..16cf21e 100644
--- a/pkg/analyzer_plugin/test/plugin/plugin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/plugin_test.dart
@@ -415,31 +415,31 @@
       : super(resourceProvider);
 
   @override
-  Future<Null> sendFoldingNotification(String path) {
+  Future<void> sendFoldingNotification(String path) {
     _sent(path, AnalysisService.FOLDING);
     return new Future.value();
   }
 
   @override
-  Future<Null> sendHighlightsNotification(String path) {
+  Future<void> sendHighlightsNotification(String path) {
     _sent(path, AnalysisService.HIGHLIGHTS);
     return new Future.value();
   }
 
   @override
-  Future<Null> sendNavigationNotification(String path) {
+  Future<void> sendNavigationNotification(String path) {
     _sent(path, AnalysisService.NAVIGATION);
     return new Future.value();
   }
 
   @override
-  Future<Null> sendOccurrencesNotification(String path) {
+  Future<void> sendOccurrencesNotification(String path) {
     _sent(path, AnalysisService.OCCURRENCES);
     return new Future.value();
   }
 
   @override
-  Future<Null> sendOutlineNotification(String path) {
+  Future<void> sendOutlineNotification(String path) {
     _sent(path, AnalysisService.OUTLINE);
     return new Future.value();
   }
diff --git a/pkg/analyzer_plugin/test/src/channel/isolate_channel_test.dart b/pkg/analyzer_plugin/test/src/channel/isolate_channel_test.dart
index 1f925d7..d462304 100644
--- a/pkg/analyzer_plugin/test/src/channel/isolate_channel_test.dart
+++ b/pkg/analyzer_plugin/test/src/channel/isolate_channel_test.dart
@@ -37,7 +37,7 @@
   }
 
   @failingTest
-  Future<Null> test_close() async {
+  Future<void> test_close() async {
     bool done = false;
     channel.listen((Request request) {}, onDone: () {
       done = true;
@@ -49,7 +49,7 @@
     expect(done, isTrue);
   }
 
-  Future<Null> test_listen() async {
+  Future<void> test_listen() async {
     Request sentRequest = new PluginShutdownParams().toRequest('5');
     Request receivedRequest;
     channel.listen((Request request) {
@@ -80,7 +80,7 @@
    * times. By default, this should pump the event queue enough times to allow
    * any code to run, as long as it's not waiting on some external event.
    */
-  Future<Null> _pumpEventQueue([int times = 5000]) {
+  Future<void> _pumpEventQueue([int times = 5000]) {
     if (times == 0) return new Future.value();
     // We use a delayed future to allow microtask events to finish. The
     // Future.value or Future() constructors use scheduleMicrotask themselves and
diff --git a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
index 500aa98..15f5b60 100644
--- a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
@@ -33,7 +33,7 @@
 }
 
 abstract class BuilderTestMixin {
-  SourceEdit getEdit(DartChangeBuilderImpl builder) {
+  SourceEdit getEdit(DartChangeBuilder builder) {
     SourceChange sourceChange = builder.sourceChange;
     expect(sourceChange, isNotNull);
     List<SourceFileEdit> fileEdits = sourceChange.edits;
@@ -45,7 +45,7 @@
     return edits[0];
   }
 
-  List<SourceEdit> getEdits(DartChangeBuilderImpl builder) {
+  List<SourceEdit> getEdits(DartChangeBuilder builder) {
     SourceChange sourceChange = builder.sourceChange;
     expect(sourceChange, isNotNull);
     List<SourceFileEdit> fileEdits = sourceChange.edits;
@@ -1388,8 +1388,7 @@
   }
 
   test_writeOverrideOfInheritedMember_setter_abstract() async {
-    if (previewDart2) {
-      await _assertWriteOverrideOfInheritedAccessor('''
+    await _assertWriteOverrideOfInheritedAccessor('''
 abstract class A {
   set value(int value);
 }
@@ -1401,25 +1400,10 @@
     // TODO: implement value
   }
 ''', displayText: 'value(int value) { … }', selection: null);
-    } else {
-      await _assertWriteOverrideOfInheritedAccessor('''
-abstract class A {
-  set value(int value);
-}
-class B extends A {
-}
-''', '''
-  @override
-  set value(int value) {
-    // TODO: implement value
-  }
-''', displayText: 'value(int value) { … }', selection: null);
-    }
   }
 
   test_writeOverrideOfInheritedMember_setter_concrete() async {
-    if (previewDart2) {
-      await _assertWriteOverrideOfInheritedAccessor('''
+    await _assertWriteOverrideOfInheritedAccessor('''
 class A {
   set value(int value) {}
 }
@@ -1432,25 +1416,8 @@
     super.value = value;
   }
 ''',
-          displayText: 'value(int value) { … }',
-          selection: new SourceRange(133, 20));
-    } else {
-      await _assertWriteOverrideOfInheritedAccessor('''
-class A {
-  set value(int value) {}
-}
-class B extends A {
-}
-''', '''
-  @override
-  set value(int value) {
-    // TODO: implement value
-    super.value = value;
-  }
-''',
-          displayText: 'value(int value) { … }',
-          selection: new SourceRange(128, 20));
-    }
+        displayText: 'value(int value) { … }',
+        selection: new SourceRange(133, 20));
   }
 
   test_writeParameter() async {
@@ -2069,7 +2036,7 @@
     expect(edit.replacement, equalsIgnoringWhitespace('implements A, B'));
   }
 
-  Future<Null> _assertImportLibrary(
+  Future<void> _assertImportLibrary(
       String initialCode, List<String> newUris, String expectedCode) async {
     String path = provider.convertPath('/test.dart');
     addSource(path, initialCode);
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart b/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
index baa96b0..d50c9f3 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/completion_target_test.dart
@@ -28,7 +28,7 @@
 
   bool get usingFastaParser => analyzer.Parser.useFasta;
 
-  Future<Null> addTestSource(String content) async {
+  Future<void> addTestSource(String content) async {
     expect(completionOffset, isNull, reason: 'Call addTestSource exactly once');
     completionOffset = content.indexOf('^');
     expect(completionOffset, isNot(equals(-1)), reason: 'missing ^');
@@ -41,7 +41,7 @@
     target = new CompletionTarget.forOffset(result.unit, completionOffset);
   }
 
-  Future<Null> assertTarget(entityText, nodeText,
+  Future<void> assertTarget(entityText, nodeText,
       {int argIndex: null,
       bool isFunctionalArgument: false,
       String droppedToken}) async {
@@ -363,6 +363,16 @@
     await assertTarget('zoo', 'zoo(z) {}');
   }
 
+  test_IfStatement_droppedToken() async {
+    // Comment  ClassDeclaration  CompilationUnit
+    await addTestSource('main() { if (v i^) }');
+    if (usingFastaParser) {
+      await assertTarget(')', 'if (v) ;', droppedToken: 'i');
+    } else {
+      await assertTarget('i;', 'if (v) i;');
+    }
+  }
+
   test_InstanceCreationExpression_identifier() async {
     // InstanceCreationExpression  ExpressionStatement  Block
     await addTestSource('class C {foo(){var f; {var x;} new ^C();}}');
@@ -410,16 +420,6 @@
         '// normal comment ', 'class C2 {zoo(z) {} String name;}');
   }
 
-  test_IfStatement_droppedToken() async {
-    // Comment  ClassDeclaration  CompilationUnit
-    await addTestSource('main() { if (v i^) }');
-    if (usingFastaParser) {
-      await assertTarget(')', 'if (v) ;', droppedToken: 'i');
-    } else {
-      await assertTarget('i;', 'if (v) i;');
-    }
-  }
-
   test_MethodDeclaration_inLineComment2() async {
     // Comment  ClassDeclaration  CompilationUnit
     await addTestSource('''
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
index 2cdbc12..ab9bcce 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
@@ -17,96 +17,17 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(OpTypeTest);
     defineReflectiveTests(OpTypeDart1OnlyTest);
-    defineReflectiveTests(OpTypeDart1Test);
   });
 }
 
-/// Common test methods to Dart1/Dart2 versions of OpType tests.
-class OpTypeTestCommon extends AbstractContextTest {
-  String testpath;
-  int completionOffset;
-  OpType visitor;
-
-  @override
-  void setUp() {
-    super.setUp();
-    testpath = provider.convertPath('/completionTest.dart');
-  }
-
-  void addTestSource(String content) {
-    completionOffset = content.indexOf('^');
-    expect(completionOffset, isNot(equals(-1)), reason: 'missing ^');
-    int nextOffset = content.indexOf('^', completionOffset + 1);
-    expect(nextOffset, equals(-1), reason: 'too many ^');
-    content = content.substring(0, completionOffset) +
-        content.substring(completionOffset + 1);
-    super.addSource(testpath, content);
-  }
-
-  Future<Null> assertOpType(
-      {bool caseLabel: false,
-      bool constructors: false,
-      bool namedArgs: false,
-      bool prefixed: false,
-      bool returnValue: false,
-      bool statementLabel: false,
-      bool staticMethodBody: false,
-      bool typeNames: false,
-      bool varNames: false,
-      bool voidReturn: false,
-      CompletionSuggestionKind kind:
-          CompletionSuggestionKind.INVOCATION}) async {
-    AnalysisResult analysisResult = await driver.getResult(testpath);
-
-    CompletionTarget completionTarget =
-        new CompletionTarget.forOffset(analysisResult.unit, completionOffset);
-    visitor = new OpType.forCompletion(completionTarget, completionOffset);
-
-    expect(visitor.includeCaseLabelSuggestions, caseLabel, reason: 'caseLabel');
-    expect(visitor.includeConstructorSuggestions, constructors,
-        reason: 'constructors');
-    expect(visitor.includeNamedArgumentSuggestions, namedArgs,
-        reason: 'namedArgs');
-    expect(visitor.includeReturnValueSuggestions, returnValue,
-        reason: 'returnValue');
-    expect(visitor.includeStatementLabelSuggestions, statementLabel,
-        reason: 'statementLabel');
-    expect(visitor.includeTypeNameSuggestions, typeNames, reason: 'typeNames');
-    expect(visitor.includeVarNameSuggestions, varNames, reason: 'varNames');
-    expect(visitor.includeVoidReturnSuggestions, voidReturn,
-        reason: 'voidReturn');
-    expect(visitor.inStaticMethodBody, staticMethodBody,
-        reason: 'staticMethodBody');
-    expect(visitor.isPrefixed, prefixed, reason: 'prefixed');
-    expect(visitor.suggestKind, kind, reason: 'suggestion kind');
-  }
-}
-
-/// Execute the tests that work on both.
-@reflectiveTest
-class OpTypeDart1Test extends OpTypeTest {
-  @override
-  bool get enablePreviewDart2 => false;
-
-  @override
-  bool get enableStrongMode => false;
-}
-
 @reflectiveTest
 // TODO: determine if tests here need to be fixed for Dart2.
 class OpTypeDart1OnlyTest extends OpTypeTestCommon {
-  @override
-  bool get enablePreviewDart2 => false;
-
-  @override
-  bool get enableStrongMode => false;
-
   @failingTest
   test_Annotation() async {
     // SimpleIdentifier  Annotation  MethodDeclaration  ClassDeclaration
     addTestSource('class C { @A^ }');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
     // TODO(danrubel): This test fails when fasta parser is enabled
     // because the @A is dropped from the Analyzer AST.
     // Ideally we generate a synthetic field and associate the annotation
@@ -126,7 +47,7 @@
     // If "expect()" were resolved, then either namedArgs would be true
     // or returnValue and typeNames would be true.
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         namedArgs: true,
         returnValue: true,
         typeNames: true);
@@ -136,31 +57,26 @@
     // SimpleIdentifier  NamedExpression  ArgumentList  MethodInvocation
     // ExpressionStatement
     addTestSource('void main() {expect(foo: ^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ArgumentList_prefixedIdentifier() async {
     // SimpleIdentifier  PrefixedIdentifier  ArgumentList
     addTestSource('void main() {expect(aa.^)}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        prefixed: true);
+        constructors: true, returnValue: true, typeNames: true, prefixed: true);
   }
 
   test_ArgumentList_resolved() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('void main() {int.parse(^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AsIdentifier() async {
     addTestSource('class A {var asdf; foo() {as^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -168,22 +84,19 @@
 
   test_Assert() async {
     addTestSource('main() {assert(^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AssertInitializer() async {
     addTestSource('class C { C() : assert(^); }');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AssignmentExpression_RHS() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
     addTestSource('class A {} main() {int a; int b = ^}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AssignmentExpression_type() async {
@@ -199,7 +112,7 @@
     // Consider suggesting only types
     // if only spaces separates the 1st and 2nd identifiers.
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -217,7 +130,7 @@
     // if newline follows first identifier
     // because user is probably starting a new statement
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -236,7 +149,7 @@
     // Consider suggesting only types
     // if only spaces separates the 1st and 2nd identifiers.
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -254,7 +167,7 @@
     // if newline follows first identifier
     // because user is probably starting a new statement
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -263,67 +176,57 @@
   test_AwaitExpression() async {
     // SimpleIdentifier  AwaitExpression  ExpressionStatement
     addTestSource('main() async {A a; await ^}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AwaitExpression2() async {
     addTestSource('main() async {A a; await c^ await}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AwaitExpression3() async {
     addTestSource('main() async {A a; await ^ await foo;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AwaitExpression4() async {
     addTestSource('main() async {A a; await ^ await bar();}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AwaitExpression_assignment() async {
     addTestSource('main() async {A a; int x = await ^}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AwaitExpression_assignment2() async {
     addTestSource('main() async {A a; int x = await ^ await foo;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_AwaitExpression_assignment3() async {
     addTestSource('main() async {A a; int x = await v^ int y = await foo;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_BinaryExpression_LHS() async {
     // SimpleIdentifier  BinaryExpression  VariableDeclaration
     // VariableDeclarationList  VariableDeclarationStatement
     addTestSource('main() {int a = 1, b = ^ + 2;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_BinaryExpression_RHS() async {
     // SimpleIdentifier  BinaryExpression  VariableDeclaration
     // VariableDeclarationList  VariableDeclarationStatement
     addTestSource('main() {int a = 1, b = 2 + ^;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_BinaryExpression_RHS2() async {
     // SimpleIdentifier  BinaryExpression
     addTestSource('main() {if (c < ^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_Block() async {
@@ -338,7 +241,7 @@
         }
       }''');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -348,7 +251,7 @@
     // '}'  Block  BlockFunctionBody  FunctionExpression
     addTestSource('main() {try {} catch () {} ^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -358,7 +261,7 @@
     // [ExpressionStatement 'c']  Block  BlockFunctionBody
     addTestSource('main() {try {} catch () {} c^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -368,7 +271,7 @@
     // [EmptyStatement]  Block  BlockFunctionBody  FunctionExpression
     addTestSource('main() {try {} catch () {} ^;}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -378,7 +281,7 @@
     // [VariableDeclarationStatement 'Foo foo']  Block  BlockFunctionBody
     addTestSource('main() {try {} catch () {} ^ Foo foo;}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -388,7 +291,7 @@
     // '}'  Block  BlockFunctionBody  FunctionExpression
     addTestSource('main() {try {} finally {} ^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -398,7 +301,7 @@
     // [ExpressionStatement 'c']  Block  BlockFunctionBody
     addTestSource('main() {try {} finally {} c^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -408,7 +311,7 @@
     // [EmptyStatement]  Block  BlockFunctionBody  FunctionExpression
     addTestSource('main() {try {} finally {} ^;}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -418,16 +321,7 @@
     // [VariableDeclarationStatement 'Foo foo']  Block  BlockFunctionBody
     addTestSource('main() {try {} finally {} ^ Foo foo;}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        voidReturn: true);
-  }
-
-  test_Block_identifier_partial() async {
-    addTestSource('class X {a() {var f; {var x;} D^ var r;} void b() { }}');
-    await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -437,7 +331,16 @@
     // Block  BlockFunctionBody  MethodDeclaration  ClassDeclaration
     addTestSource('class A extends E implements I with M {a() {^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        voidReturn: true);
+  }
+
+  test_Block_identifier_partial() async {
+    addTestSource('class X {a() {var f; {var x;} D^ var r;} void b() { }}');
+    await assertOpType(
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -446,7 +349,7 @@
   test_Block_keyword() async {
     addTestSource('class C { static C get instance => null; } main() {C.in^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         prefixed: true,
         returnValue: true,
         typeNames: true,
@@ -456,7 +359,7 @@
   test_Block_static() async {
     addTestSource('class A {static foo() {^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         staticMethodBody: true,
@@ -470,7 +373,7 @@
       // but the user is trying to get completions for a non-cascade
       main() {A a; a.^.z}''');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -481,7 +384,7 @@
     // SimpleIdentifier  PropertyAccess  CascadeExpression  ExpressionStatement
     addTestSource('main() {A a; a..^z}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         voidReturn: true,
         prefixed: true);
@@ -491,7 +394,7 @@
     // PropertyAccess  CascadeExpression  ExpressionStatement  Block
     addTestSource('main() {A a; a..^ return}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         voidReturn: true,
         prefixed: true);
@@ -501,7 +404,7 @@
     // SimpleIdentifier  CascadeExpression  ExpressionStatement
     addTestSource('main() {A a; a^..b}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -511,7 +414,7 @@
     // Block  CatchClause  TryStatement
     addTestSource('class A {a() {try{var x;} on E catch (e) {^}}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -521,7 +424,7 @@
     // Block  CatchClause  TryStatement
     addTestSource('class A {a() {try{var x;} catch (e, s) {^}}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -531,7 +434,7 @@
     // SimpleIdentifier  CommentReference  Comment  MethodDeclaration
     addTestSource('class A {/** [^] */ mth() {}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -541,64 +444,56 @@
   test_ConditionalExpression_elseExpression() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T1 : T^}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ConditionalExpression_elseExpression_empty() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T1 : ^}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ConditionalExpression_partial_thenExpression() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T^}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ConditionalExpression_partial_thenExpression_empty() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? ^}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ConditionalExpression_thenExpression() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T^ : c}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_DefaultFormalParameter_named_expression() async {
     // DefaultFormalParameter FormalParameterList MethodDeclaration
     addTestSource('class A {a(blat: ^) { }}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_DoStatement() async {
     // SimpleIdentifier  DoStatement  Block
     addTestSource('main() {do{} while(^x);}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ExpressionFunctionBody() async {
     // SimpleIdentifier  ExpressionFunctionBody  FunctionExpression
     addTestSource('m(){[1].forEach((x)=>^x);}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ExpressionStatement() async {
     // ExpressionStatement  Block  BlockFunctionBody
     addTestSource('n(){f(3);^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -607,15 +502,14 @@
   test_ForEachStatement() async {
     // SimpleIdentifier  ForEachStatement  Block
     addTestSource('main() {for(z in ^zs) {}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ForEachStatement_body_typed() async {
     // Block  ForEachStatement
     addTestSource('main(args) {for (int foo in bar) {^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -625,7 +519,7 @@
     // Block  ForEachStatement
     addTestSource('main(args) {for (foo in bar) {^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -634,45 +528,34 @@
   test_ForEachStatement_iterable() async {
     // SimpleIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (int foo in ^) {}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_FormalParameter_partialType() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(b.^ f) { }}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        prefixed: true);
+        constructors: true, returnValue: true, typeNames: true, prefixed: true);
   }
 
   test_FormalParameter_partialType2() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(b.z^ f) { }}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        prefixed: true);
+        constructors: true, returnValue: true, typeNames: true, prefixed: true);
   }
 
   test_FormalParameter_partialType3() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(b.^) { }}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        prefixed: true);
+        constructors: true, returnValue: true, typeNames: true, prefixed: true);
   }
 
   test_ForStatement_condition() async {
     // SimpleIdentifier  ForStatement
     addTestSource('main() {for (int index = 0; i^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ForStatement_updaters() async {
@@ -680,7 +563,7 @@
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
     // TODO (danrubel) may want to exclude methods/functions with void return
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -689,15 +572,14 @@
   test_ForStatement_updaters_prefix_expression() async {
     // SimpleIdentifier  PrefixExpression  ForStatement
     addTestSource('main() {for (int index = 0; index < 10; ++i^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_IfStatement() async {
     // EmptyStatement  IfStatement  Block  BlockFunctionBody
     addTestSource('main(){var a; if (true) ^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -706,44 +588,37 @@
   test_IfStatement_condition() async {
     // SimpleIdentifier  IfStatement  Block  BlockFunctionBody
     addTestSource('main(){var a; if (^)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_IfStatement_empty() async {
     // SimpleIdentifier  PrefixIdentifier  IfStatement
     addTestSource('class A {foo() {A a; if (^) something}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_IfStatement_invocation() async {
     // SimpleIdentifier  PrefixIdentifier  IfStatement
     addTestSource('main() {var a; if (a.^) something}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        prefixed: true);
+        constructors: true, returnValue: true, typeNames: true, prefixed: true);
   }
 
   test_IndexExpression() async {
     addTestSource('class C {foo(){var f; {var x;} f[^]}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_IndexExpression2() async {
     addTestSource('class C {foo(){var f; {var x;} f[T^]}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_InstanceCreationExpression_keyword() async {
     // InstanceCreationExpression  ExpressionStatement  Block
     addTestSource('class C {foo(){var f; {var x;} new^ }}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -753,7 +628,7 @@
     // InstanceCreationExpression  ExpressionStatement  Block
     addTestSource('class C {foo(){var f; {var x;} new^ C();}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -762,73 +637,62 @@
   test_InterpolationExpression() async {
     // SimpleIdentifier  InterpolationExpression  StringInterpolation
     addTestSource('main() {String name; print("hello \$^");}');
-    await assertOpType(constructors: previewDart2, returnValue: true);
+    await assertOpType(constructors: true, returnValue: true);
   }
 
   test_InterpolationExpression_block() async {
     // SimpleIdentifier  InterpolationExpression  StringInterpolation
     addTestSource('main() {String name; print("hello \${n^}");}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_InterpolationExpression_prefix_selector() async {
     // SimpleIdentifier  PrefixedIdentifier  InterpolationExpression
     addTestSource('main() {String name; print("hello \${name.^}");}');
     await assertOpType(
-        constructors: previewDart2,
-        returnValue: true,
-        typeNames: true,
-        prefixed: true);
+        constructors: true, returnValue: true, typeNames: true, prefixed: true);
   }
 
   test_InterpolationExpression_prefix_target() async {
     // SimpleIdentifier  PrefixedIdentifier  InterpolationExpression
     addTestSource('main() {String name; print("hello \${nam^e.length}");}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_IsExpression_target() async {
     // IfStatement  Block  BlockFunctionBody
     addTestSource('main(){var a; if (^ is A)}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_Literal_list() async {
     // ']'  ListLiteral  ArgumentList  MethodInvocation
     addTestSource('main() {var Some; print([^]);}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_Literal_list2() async {
     // SimpleIdentifier ListLiteral  ArgumentList  MethodInvocation
     addTestSource('main() {var Some; print([S^]);}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_MapLiteralEntry() async {
     // MapLiteralEntry  MapLiteral  VariableDeclaration
     addTestSource('foo = {^');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_MapLiteralEntry1() async {
     // MapLiteralEntry  MapLiteral  VariableDeclaration
     addTestSource('foo = {T^');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_MapLiteralEntry2() async {
     // SimpleIdentifier  MapLiteralEntry  MapLiteral  VariableDeclaration
     addTestSource('foo = {7:T^};');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_MethodInvocation_no_semicolon() async {
@@ -839,7 +703,7 @@
         set _s2(I x) {x.^ m(null);}
       }''');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -849,15 +713,14 @@
   test_PostfixExpression() async {
     // SimpleIdentifier  PostfixExpression  ForStatement
     addTestSource('int x = 0; main() {ax+^+;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_PrefixedIdentifier_class_const() async {
     // SimpleIdentifier PrefixedIdentifier ExpressionStatement Block
     addTestSource('main() {A.^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -868,7 +731,7 @@
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('main() {A a; a.^}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -879,7 +742,7 @@
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addTestSource('class X {foo(){A^.bar}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         typeNames: true,
         returnValue: true,
         voidReturn: true);
@@ -889,7 +752,7 @@
     // SimpleIdentifier  MethodInvocation  PropertyAccess  ExpressionStatement
     addTestSource('class A {a() {"hello".to^String().length}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -900,7 +763,7 @@
     // SimpleIdentifier  PropertyAccess  ExpressionStatement  Block
     addTestSource('class A {a() {"hello".length.^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true,
@@ -910,15 +773,14 @@
   test_ReturnStatement() async {
     // ReturnStatement  Block
     addTestSource('f() { var vvv = 42; return ^ }');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_SwitchCase_between() async {
     // SwitchCase  SwitchStatement  Block
     addTestSource('main() {switch(k) {case 1: ^ case 2: return}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -927,22 +789,20 @@
   test_SwitchCase_expression1() async {
     // SimpleIdentifier  SwitchCase  SwitchStatement
     addTestSource('''m() {switch (x) {case ^D: return;}}''');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_SwitchCase_expression2() async {
     // SimpleIdentifier  SwitchCase  SwitchStatement
     addTestSource('''m() {switch (x) {case ^}}''');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_SwitchDefault_between() async {
     // SwitchDefault  SwitchStatement  Block
     addTestSource('main() {switch(k) {case 1: ^ default: return;}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -952,7 +812,7 @@
     // Token('}')  SwitchStatement  Block
     addTestSource('main() {switch(k) {case 1:^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -961,7 +821,7 @@
   test_SwitchStatement_body_end2() async {
     addTestSource('main() {switch(k) {case 1:as^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -970,22 +830,19 @@
   test_SwitchStatement_expression1() async {
     // SimpleIdentifier  SwitchStatement  Block
     addTestSource('main() {switch(^k) {case 1:{}}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_SwitchStatement_expression2() async {
     // SimpleIdentifier  SwitchStatement  Block
     addTestSource('main() {switch(k^) {case 1:{}}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_SwitchStatement_expression_empty() async {
     // SimpleIdentifier  SwitchStatement  Block
     addTestSource('main() {switch(^) {case 1:{}}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_ThisExpression_block() async {
@@ -997,7 +854,7 @@
       }''');
     // TODO(brianwilkerson) We should not be adding constructors here.
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         voidReturn: true,
         prefixed: true);
@@ -1010,7 +867,7 @@
         A() {this.^}
       }''');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         voidReturn: true,
         prefixed: true);
@@ -1019,15 +876,14 @@
   test_ThrowExpression() async {
     // SimpleIdentifier  ThrowExpression  ExpressionStatement
     addTestSource('main() {throw ^;}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_VariableDeclarationStatement_afterSemicolon() async {
     // VariableDeclarationStatement  Block  BlockFunctionBody
     addTestSource('class A {var a; x() {var b;^}}');
     await assertOpType(
-        constructors: previewDart2,
+        constructors: true,
         returnValue: true,
         typeNames: true,
         voidReturn: true);
@@ -1037,29 +893,27 @@
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement
     addTestSource('class C {bar(){var f; {var x;} var e = ^}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_VariableDeclarationStatement_RHS_missing_semicolon() async {
     // VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement
     addTestSource('class C {bar(){var f; {var x;} var e = ^ var g}}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
   test_WhileStatement() async {
     // SimpleIdentifier  WhileStatement  Block
     addTestSource('mth() { while (b^) {} }}');
-    await assertOpType(
-        constructors: previewDart2, returnValue: true, typeNames: true);
+    await assertOpType(constructors: true, returnValue: true, typeNames: true);
   }
 
+  @failingTest
   test_WithClause() async {
     // WithClause  ClassDeclaration
     addTestSource('class x extends Object with ^\n{}');
-    await assertOpType(constructors: previewDart2, typeNames: true);
+    await assertOpType(constructors: true, typeNames: true);
   }
 }
 
@@ -2054,3 +1908,64 @@
     await assertOpType(typeNames: true);
   }
 }
+
+/// Common test methods to Dart1/Dart2 versions of OpType tests.
+class OpTypeTestCommon extends AbstractContextTest {
+  String testpath;
+  int completionOffset;
+  OpType visitor;
+
+  void addTestSource(String content) {
+    completionOffset = content.indexOf('^');
+    expect(completionOffset, isNot(equals(-1)), reason: 'missing ^');
+    int nextOffset = content.indexOf('^', completionOffset + 1);
+    expect(nextOffset, equals(-1), reason: 'too many ^');
+    content = content.substring(0, completionOffset) +
+        content.substring(completionOffset + 1);
+    super.addSource(testpath, content);
+  }
+
+  Future<void> assertOpType(
+      {bool caseLabel: false,
+      bool constructors: false,
+      bool namedArgs: false,
+      bool prefixed: false,
+      bool returnValue: false,
+      bool statementLabel: false,
+      bool staticMethodBody: false,
+      bool typeNames: false,
+      bool varNames: false,
+      bool voidReturn: false,
+      CompletionSuggestionKind kind:
+          CompletionSuggestionKind.INVOCATION}) async {
+    AnalysisResult analysisResult = await driver.getResult(testpath);
+
+    CompletionTarget completionTarget =
+        new CompletionTarget.forOffset(analysisResult.unit, completionOffset);
+    visitor = new OpType.forCompletion(completionTarget, completionOffset);
+
+    expect(visitor.includeCaseLabelSuggestions, caseLabel, reason: 'caseLabel');
+    expect(visitor.includeConstructorSuggestions, constructors,
+        reason: 'constructors');
+    expect(visitor.includeNamedArgumentSuggestions, namedArgs,
+        reason: 'namedArgs');
+    expect(visitor.includeReturnValueSuggestions, returnValue,
+        reason: 'returnValue');
+    expect(visitor.includeStatementLabelSuggestions, statementLabel,
+        reason: 'statementLabel');
+    expect(visitor.includeTypeNameSuggestions, typeNames, reason: 'typeNames');
+    expect(visitor.includeVarNameSuggestions, varNames, reason: 'varNames');
+    expect(visitor.includeVoidReturnSuggestions, voidReturn,
+        reason: 'voidReturn');
+    expect(visitor.inStaticMethodBody, staticMethodBody,
+        reason: 'staticMethodBody');
+    expect(visitor.isPrefixed, prefixed, reason: 'prefixed');
+    expect(visitor.suggestKind, kind, reason: 'suggestion kind');
+  }
+
+  @override
+  void setUp() {
+    super.setUp();
+    testpath = provider.convertPath('/completionTest.dart');
+  }
+}
diff --git a/pkg/analyzer_plugin/test/support/abstract_context.dart b/pkg/analyzer_plugin/test/support/abstract_context.dart
index 361b9f8..0af1e8d 100644
--- a/pkg/analyzer_plugin/test/support/abstract_context.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_context.dart
@@ -60,18 +60,6 @@
   AnalysisDriver get driver => _driver;
 
   /**
-   * Return `true` if strong mode should be enabled for this test.
-   */
-  bool get enableStrongMode => true;
-
-  /**
-   * Return `true` if previewDart2 should be enabled for this test.
-   */
-  bool get enablePreviewDart2 => true;
-
-  bool get previewDart2 => driver.analysisOptions.previewDart2;
-
-  /**
    * Return the analysis session associated with the driver.
    */
   AnalysisSession get session => driver.currentSession;
@@ -136,8 +124,7 @@
         [new DartUriResolver(sdk), packageResolver, resourceResolver]);
     PerformanceLog log = new PerformanceLog(_logBuffer);
     AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl()
-      ..previewDart2 = enablePreviewDart2;
+    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     _driver = new AnalysisDriver(
         scheduler,
         log,
diff --git a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
index 97b5692..30ebe72 100644
--- a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
@@ -42,7 +42,8 @@
    * Returns the [SimpleIdentifier] at the given search pattern.
    */
   SimpleIdentifier findIdentifier(String search) {
-    return findNodeAtString(search, (node) => node is SimpleIdentifier);
+    return findNodeAtString(search, (node) => node is SimpleIdentifier)
+        as SimpleIdentifier;
   }
 
   AstNode findNodeAtOffset(int offset, [Predicate<AstNode> predicate]) {
@@ -94,7 +95,7 @@
     return length;
   }
 
-  Future<Null> resolveTestUnit(String code) async {
+  Future<void> resolveTestUnit(String code) async {
     addTestSource(code);
     var result = await driver.getResult(testFile);
     testUnit = (result).unit;
diff --git a/pkg/analyzer_plugin/test/support/mock_sdk.dart b/pkg/analyzer_plugin/test/support/mock_sdk.dart
index dd14e81..bedead0 100644
--- a/pkg/analyzer_plugin/test/support/mock_sdk.dart
+++ b/pkg/analyzer_plugin/test/support/mock_sdk.dart
@@ -276,7 +276,7 @@
 
   MockSdk(
       {bool generateSummaryFiles: false,
-      resource.ResourceProvider resourceProvider})
+      resource.MemoryResourceProvider resourceProvider})
       : provider = resourceProvider ?? new resource.MemoryResourceProvider() {
     LIBRARIES.forEach((SdkLibrary library) {
       provider.newFile(library.path, (library as MockSdkLibrary).content);
diff --git a/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart b/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
index 05dfb0a..a755f2b 100644
--- a/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
@@ -407,11 +407,7 @@
       expect(location.startColumn, 16);
     }
     expect(element.parameters, isNull);
-    if (previewDart2) {
-      expect(element.returnType, 'int');
-    } else {
-      expect(element.returnType, 'dynamic');
-    }
+    expect(element.returnType, 'int');
     expect(
         element.flags, plugin.Element.FLAG_CONST | plugin.Element.FLAG_STATIC);
   }
diff --git a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
index 48a88e4..ec85ce6 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
@@ -450,7 +450,7 @@
    * Return a [Future] that completes with the containing library information
    * after it is accessible via [context.getLibrariesContaining].
    */
-  Future<Null> computeLibrariesContaining() {
+  Future<void> computeLibrariesContaining() {
     return driver.getResult(testFile).then((result) => null);
   }
 
diff --git a/pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart b/pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart
index 74b4392..5fb3de5 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart
@@ -21,9 +21,6 @@
 
 @reflectiveTest
 class TypeMemberContributorTest extends DartCompletionContributorTest {
-  @override
-  bool get enableStrongMode => true;
-
   /**
    * Check whether a declaration of the form [shadower] in a derived class
    * shadows a declaration of the form [shadowee] in a base class, for the
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart b/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart
index 681f646..ade4b69 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart
@@ -653,7 +653,7 @@
           String fieldAccessor = 'json[$fieldNameString]';
           String jsonPath = 'jsonPath + ${literalString('.${field.name}')}';
           if (field.value != null) {
-            String valueString = literalString(field.value);
+            String valueString = literalString(field.value as String);
             writeln('if ($fieldAccessor != $valueString) {');
             indent(() {
               writeln(
@@ -857,7 +857,7 @@
           String flag = 'FLAG_${name.toUpperCase()}';
           String camelName = camelJoin(['is', name]);
           writeln('static const int $flag = $value;');
-          makeFlagsArgs.add('$camelName: false');
+          makeFlagsArgs.add('bool $camelName: false');
           makeFlagsStatements.add('if ($camelName) flags |= $flag;');
         });
         writeln();
@@ -897,7 +897,8 @@
       for (TypeObjectField field in type.fields) {
         String fieldNameString = literalString(field.name);
         if (field.value != null) {
-          writeln('result[$fieldNameString] = ${literalString(field.value)};');
+          writeln(
+              'result[$fieldNameString] = ${literalString(field.value as String)};');
           continue;
         }
         String fieldToJson = toJsonCode(field.type).asSnippet(field.name);
@@ -1066,13 +1067,13 @@
                 'Each choice in the union needs a constant value for the field ${type.field}');
           }
           String closure = fromJsonCode(choice).asClosure;
-          decoders.add('${literalString(field.value)}: $closure');
+          decoders.add('${literalString(field.value as String)}: $closure');
         } else {
           throw new Exception('Union types must be unions of objects.');
         }
       }
       return new FromJsonSnippet((String jsonPath, String json) =>
-          'jsonDecoder.decodeUnion($jsonPath, $json, ${literalString(type.field)}, {${decoders.join(', ')}})');
+          'jsonDecoder.decodeUnion($jsonPath, $json as Map, ${literalString(type.field)}, {${decoders.join(', ')}})');
     } else {
       throw new Exception("Can't convert $type from JSON");
     }
@@ -1108,9 +1109,7 @@
   /**
    * Create a string literal that evaluates to [s].
    */
-  String literalString(String s) {
-    return json.encode(s);
-  }
+  String literalString(String s) => json.encode(s);
 
   /**
    * Compute the code necessary to convert [type] to JSON.
diff --git a/pkg/analyzer_plugin/tool/spec/from_html.dart b/pkg/analyzer_plugin/tool/spec/from_html.dart
index d940d8e..87b41c2 100644
--- a/pkg/analyzer_plugin/tool/spec/from_html.dart
+++ b/pkg/analyzer_plugin/tool/spec/from_html.dart
@@ -127,7 +127,7 @@
         throw new Exception(
             '$context: Unexpected attribute in ${element.localName}: $name');
       }
-      attributesFound.add(name);
+      attributesFound.add(name as String);
     });
     for (String expectedAttribute in requiredAttributes) {
       if (!attributesFound.contains(expectedAttribute)) {
@@ -296,7 +296,7 @@
         if (valueType == null) {
           throw new Exception('$context: Value type not specified');
         }
-        types.add(new TypeMap(keyType, valueType, child));
+        types.add(new TypeMap(keyType as TypeReference, valueType, child));
       },
       'enum': (dom.Element child) {
         types.add(typeEnumFromHtml(child, context));
diff --git a/pkg/compiler/lib/src/common_elements.dart b/pkg/compiler/lib/src/common_elements.dart
index 1f8bf50..fe6d994 100644
--- a/pkg/compiler/lib/src/common_elements.dart
+++ b/pkg/compiler/lib/src/common_elements.dart
@@ -892,10 +892,6 @@
   ConstructorEntity get typeVariableConstructor => _typeVariableConstructor ??=
       _env.lookupConstructor(typeVariableClass, '');
 
-  FunctionEntity _invokeOnMethod;
-  FunctionEntity get invokeOnMethod => _invokeOnMethod ??= _env
-      .lookupLocalClassMember(jsInvocationMirrorClass, '_getCachedInvocation');
-
   FunctionEntity _assertTest;
   FunctionEntity get assertTest =>
       _assertTest ??= _findHelperFunction('assertTest');
diff --git a/pkg/compiler/lib/src/constant_system_dart.dart b/pkg/compiler/lib/src/constant_system_dart.dart
index 4179a3b..8d9fab5 100644
--- a/pkg/compiler/lib/src/constant_system_dart.dart
+++ b/pkg/compiler/lib/src/constant_system_dart.dart
@@ -342,10 +342,14 @@
     }
 
     if (left.isConstructedObject) {
+      if (right.isNull) {
+        return DART_CONSTANT_SYSTEM.createBool(false);
+      }
       // Unless we know that the user-defined object does not implement the
       // equality operator we cannot fold here.
       return null;
     }
+
     return DART_CONSTANT_SYSTEM.createBool(left == right);
   }
 
diff --git a/pkg/compiler/lib/src/constants/expressions.dart b/pkg/compiler/lib/src/constants/expressions.dart
index b03de0b..38a4e71 100644
--- a/pkg/compiler/lib/src/constants/expressions.dart
+++ b/pkg/compiler/lib/src/constants/expressions.dart
@@ -1051,22 +1051,26 @@
       case BinaryOperatorKind.EQ:
       case BinaryOperatorKind.NOT_EQ:
         if (!leftValue.isPrimitive) {
-          environment.reportError(
-              left, MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE, {
-            'constant': left,
-            'type': leftValue.getType(environment.commonElements),
-            'operator': operator
-          });
-          isValid = false;
+          if (!rightValue.isNull) {
+            environment.reportError(
+                left, MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE, {
+              'constant': left,
+              'type': leftValue.getType(environment.commonElements),
+              'operator': operator
+            });
+            isValid = false;
+          }
         }
         if (!rightValue.isPrimitive) {
-          environment.reportError(
-              right, MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE, {
-            'constant': right,
-            'type': rightValue.getType(environment.commonElements),
-            'operator': operator
-          });
-          isValid = false;
+          if (!leftValue.isNull) {
+            environment.reportError(
+                right, MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE, {
+              'constant': right,
+              'type': rightValue.getType(environment.commonElements),
+              'operator': operator
+            });
+            isValid = false;
+          }
         }
         break;
       case BinaryOperatorKind.ADD:
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
index fa962df..6487088a 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
@@ -1184,21 +1184,9 @@
     inferrer.updateSelectorInMember(
         caller, _callType, _call, selector, typeMask);
 
-    AbstractValue maskToUse =
-        closedWorld.extendMaskIfReachesAll(selector, typeMask);
-    bool canReachAll =
-        closedWorld.backendUsage.isInvokeOnUsed && (maskToUse != typeMask);
-
-    // If this call could potentially reach all methods that satisfy
-    // the untyped selector (through noSuchMethod's `Invocation`
-    // and a call to `delegate`), we iterate over all these methods to
-    // update their parameter types.
     _hasClosureCallTargets =
-        closedWorld.includesClosureCall(selector, maskToUse);
-    _concreteTargets = closedWorld.locateMembers(selector, maskToUse);
-    Iterable<MemberEntity> typedTargets = canReachAll
-        ? closedWorld.locateMembers(selector, typeMask)
-        : _concreteTargets;
+        closedWorld.includesClosureCall(selector, typeMask);
+    _concreteTargets = closedWorld.locateMembers(selector, typeMask);
 
     // Update the call graph if the targets could have changed.
     if (!identical(_concreteTargets, oldTargets)) {
@@ -1237,14 +1225,6 @@
     } else {
       result = inferrer.types
           .joinTypeMasks(_concreteTargets.map((MemberEntity element) {
-        // If [canReachAll] is true, then we are iterating over all
-        // targets that satisfy the untyped selector. We skip the return
-        // type of the targets that can only be reached through
-        // `Invocation.delegate`. Note that the `noSuchMethod` targets
-        // are included in [typedTargets].
-        if (canReachAll && !typedTargets.contains(element)) {
-          return abstractValueDomain.emptyType;
-        }
         if (inferrer.returnsListElementType(selector, typeMask)) {
           return abstractValueDomain.getContainerElementType(receiver.type);
         } else if (inferrer.returnsMapValueType(selector, typeMask)) {
diff --git a/pkg/compiler/lib/src/js/rewrite_async.dart b/pkg/compiler/lib/src/js/rewrite_async.dart
index cfde643..b31697c 100644
--- a/pkg/compiler/lib/src/js/rewrite_async.dart
+++ b/pkg/compiler/lib/src/js/rewrite_async.dart
@@ -1379,9 +1379,8 @@
           if (clause is js.Case) {
             return new js.Case(
                 clause.expression, translateToBlock(clause.body));
-          } else {
-            return new js.Default(
-                translateToBlock((clause as js.Default).body));
+          } else if (clause is js.Default) {
+            return new js.Default(translateToBlock(clause.body));
           }
         }).toList();
         addStatement(new js.Switch(key, cases));
diff --git a/pkg/compiler/lib/src/js_backend/backend_usage.dart b/pkg/compiler/lib/src/js_backend/backend_usage.dart
index 3b7503c..75186d5 100644
--- a/pkg/compiler/lib/src/js_backend/backend_usage.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_usage.dart
@@ -33,9 +33,6 @@
   /// `true` if a core-library function requires the preamble file to function.
   bool get requiresPreamble;
 
-  /// `true` if [CommonElements.invokeOnMethod] is used.
-  bool get isInvokeOnUsed;
-
   /// `true` of `Object.runtimeType` is used.
   bool get isRuntimeTypeUsed;
 
@@ -107,9 +104,6 @@
   /// `true` if a core-library function requires the preamble file to function.
   bool requiresPreamble = false;
 
-  /// `true` if [CommonElements.invokeOnMethod] is used.
-  bool isInvokeOnUsed = false;
-
   /// `true` if `Function.apply` is used.
   bool isFunctionApplyUsed = false;
 
@@ -227,8 +221,6 @@
       _needToInitializeIsolateAffinityTag = true;
     } else if (member == _commonElements.requiresPreambleMarker) {
       requiresPreamble = true;
-    } else if (member == _commonElements.invokeOnMethod) {
-      isInvokeOnUsed = true;
     } else if (_commonElements.isFunctionApplyMethod(member)) {
       isFunctionApplyUsed = true;
     } else if (member.library == _commonElements.mirrorsLibrary) {
@@ -266,7 +258,6 @@
         needToInitializeIsolateAffinityTag: _needToInitializeIsolateAffinityTag,
         needToInitializeDispatchProperty: _needToInitializeDispatchProperty,
         requiresPreamble: requiresPreamble,
-        isInvokeOnUsed: isInvokeOnUsed,
         runtimeTypeUses: _runtimeTypeUses,
         isFunctionApplyUsed: isFunctionApplyUsed,
         isMirrorsUsed: isMirrorsUsed,
@@ -293,9 +284,6 @@
   /// `true` if a core-library function requires the preamble file to function.
   final bool requiresPreamble;
 
-  /// `true` if [CommonElements.invokeOnMethod] is used.
-  final bool isInvokeOnUsed;
-
   /// `true` if `Function.apply` is used.
   final bool isFunctionApplyUsed;
 
@@ -313,7 +301,6 @@
       this.needToInitializeIsolateAffinityTag,
       this.needToInitializeDispatchProperty,
       this.requiresPreamble,
-      this.isInvokeOnUsed,
       Set<RuntimeTypeUse> runtimeTypeUses,
       this.isFunctionApplyUsed,
       this.isMirrorsUsed,
diff --git a/pkg/compiler/lib/src/js_backend/interceptor_data.dart b/pkg/compiler/lib/src/js_backend/interceptor_data.dart
index 69f45a6f..f621411 100644
--- a/pkg/compiler/lib/src/js_backend/interceptor_data.dart
+++ b/pkg/compiler/lib/src/js_backend/interceptor_data.dart
@@ -188,7 +188,6 @@
           if (result == null) result = new Set<ClassEntity>();
           result.add(subclass);
         }
-        return null;
       });
     }
     return result;
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types.dart b/pkg/compiler/lib/src/js_backend/runtime_types.dart
index 83c783a..95682d0 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types.dart
@@ -1473,7 +1473,6 @@
         closedWorld.classHierarchy.forEachStrictSubtypeOf(cls,
             (ClassEntity sub) {
           potentiallyNeedTypeArguments(sub);
-          return null;
         });
       } else if (entity is FunctionEntity) {
         methodsNeedingTypeArguments.add(entity);
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
index ad31900..8dd194e 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
@@ -377,10 +377,6 @@
         subclassReadGenerator, interceptorsByTagAccess, leafTagsAccess);
   }
 
-  jsAst.ObjectInitializer generateInterceptedNamesSet() {
-    return interceptorEmitter.generateInterceptedNamesSet();
-  }
-
   /// In minified mode we want to keep the name for the most common core types.
   bool _isNativeTypeNeedingReflectionName(ClassEntity element) {
     return (element == commonElements.intClass ||
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart
index dc2f3c3..e7afba7 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart
@@ -94,28 +94,6 @@
   }
 
   /**
-   * If [JSInvocationMirror._invokeOn] has been compiled, emit all the
-   * possible selector names that are intercepted into the
-   * [interceptedNames] embedded global. The implementation of
-   * [_invokeOn] will use it to determine whether it should call the
-   * method with an extra parameter.
-   */
-  jsAst.ObjectInitializer generateInterceptedNamesSet() {
-    // We could also generate the list of intercepted names at
-    // runtime, by running through the subclasses of Interceptor
-    // (which can easily be identified).
-    if (!closedWorld.backendUsage.isInvokeOnUsed) return null;
-
-    Iterable<jsAst.Name> invocationNames = interceptorInvocationNames.toList()
-      ..sort();
-    ;
-    List<jsAst.Property> properties = invocationNames.map((jsAst.Name name) {
-      return new jsAst.Property(js.quoteName(name), js.number(1));
-    }).toList();
-    return new jsAst.ObjectInitializer(properties, isOneLiner: true);
-  }
-
-  /**
    * Emit initializer for `typeToInterceptorMap` data structure used by
    * `findInterceptorForType`.  See declaration of `typeToInterceptor` in
    * `interceptors.dart`.
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart
index 3017abe..a6a0143 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart
@@ -37,8 +37,6 @@
       emitter.generateEmbeddedGlobalAccess(embeddedNames.TYPE_INFORMATION);
   jsAst.Expression staticsAccess =
       emitter.generateEmbeddedGlobalAccess(embeddedNames.STATICS);
-  jsAst.Expression interceptedNamesAccess =
-      emitter.generateEmbeddedGlobalAccess(embeddedNames.INTERCEPTED_NAMES);
   jsAst.Expression mangledGlobalNamesAccess =
       emitter.generateEmbeddedGlobalAccess(embeddedNames.MANGLED_GLOBAL_NAMES);
   jsAst.Expression mangledNamesAccess =
@@ -94,9 +92,6 @@
     'staticsPropertyName': namer.staticsPropertyName,
     'staticsPropertyNameString': js.quoteName(namer.staticsPropertyName),
     'typeInformation': typeInformationAccess,
-    'enabledInvokeOn': closedWorld.backendUsage.isInvokeOnUsed,
-    'interceptedNames': interceptedNamesAccess,
-    'interceptedNamesSet': emitter.generateInterceptedNamesSet(),
     'notInCspMode': !compiler.options.useContentSecurityPolicy,
     'inCspMode': compiler.options.useContentSecurityPolicy,
     'deferredAction': namer.deferredAction,
@@ -681,10 +676,6 @@
         funcs.push(f);
         f.\$stubName = getterStubName;
         f.\$callName = null;
-        // Update the interceptedNames map (which only exists if `invokeOn` was
-        // enabled).
-        if (#enabledInvokeOn)
-          if (isIntercepted) #interceptedNames[getterStubName] = 1;
       }
 
       if (#usesMangledNames) {
@@ -735,8 +726,6 @@
   if (!#mangledGlobalNames) #mangledGlobalNames = map();
   if (!#statics) #statics = map();
   if (!#typeInformation) #typeInformation = map();
-  if (#enabledInvokeOn)
-    if (!#interceptedNames) #interceptedNames = #interceptedNamesSet;
   var libraries = #libraries;
   var mangledNames = #mangledNames;
   var mangledGlobalNames = #mangledGlobalNames;
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index 29f780b..a4b4472 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -295,7 +295,6 @@
         .getClassHierarchyNode(closedWorld.commonElements.objectClass)
         .forEachSubclass((ClassEntity cls) {
       convertClassSet(closedWorld.classHierarchy.getClassSet(cls));
-      return null;
     }, ClassHierarchyNode.ALL);
 
     Set<MemberEntity> liveInstanceMembers =
@@ -439,7 +438,6 @@
         needToInitializeDispatchProperty:
             backendUsage.needToInitializeDispatchProperty,
         requiresPreamble: backendUsage.requiresPreamble,
-        isInvokeOnUsed: backendUsage.isInvokeOnUsed,
         runtimeTypeUses: runtimeTypeUses,
         isFunctionApplyUsed: backendUsage.isFunctionApplyUsed,
         isMirrorsUsed: backendUsage.isMirrorsUsed,
diff --git a/pkg/compiler/lib/src/old_to_new_api.dart b/pkg/compiler/lib/src/old_to_new_api.dart
index a12355f..0363419 100644
--- a/pkg/compiler/lib/src/old_to_new_api.dart
+++ b/pkg/compiler/lib/src/old_to_new_api.dart
@@ -23,8 +23,6 @@
 
   @override
   Future<Input> readFromUri(Uri uri, {InputKind inputKind: InputKind.UTF8}) {
-    // The switch handles all enum values, but not null.
-    // ignore: missing_return
     return _inputProvider(uri).then((/*String|List<int>*/ data) {
       switch (inputKind) {
         case InputKind.UTF8:
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index fb37283..4e5b4ee 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -40,8 +40,7 @@
 import '../universe/selector.dart';
 import '../universe/side_effects.dart' show SideEffects;
 import '../universe/target_checks.dart' show TargetChecks;
-import '../universe/use.dart'
-    show ConstantUse, ConstrainedDynamicUse, StaticUse;
+import '../universe/use.dart' show ConstantUse, StaticUse;
 import '../universe/world_builder.dart' show CodegenWorldBuilder;
 import '../world.dart';
 import 'graph_builder.dart';
@@ -4469,17 +4468,6 @@
         _elementMap.getClass(_containingClass(invocation));
     FunctionEntity noSuchMethod =
         _elementMap.getSuperNoSuchMethod(containingClass);
-    if (backendUsage.isInvokeOnUsed &&
-        noSuchMethod.enclosingClass != _commonElements.objectClass) {
-      // Register the call as dynamic if [noSuchMethod] on the super
-      // class is _not_ the default implementation from [Object] (it might be
-      // overridden in the super class, but it might have a different number of
-      // arguments), in case the [noSuchMethod] implementation calls
-      // [JSInvocationMirror._invokeOn].
-      // TODO(johnniwinther): Register this more precisely.
-      registry
-          ?.registerDynamicUse(new ConstrainedDynamicUse(selector, null, null));
-    }
 
     ConstantValue nameConstant = constantSystem.createString(publicName);
 
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 2b1adbc..b92ef53 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -1849,9 +1849,7 @@
         return _abstractValueDomain.createNonNullSubtype(enclosing);
       }
     }
-    // If [JSInvocationMirror._invokeOn] is enabled, and this call
-    // might hit a `noSuchMethod`, we register an untyped selector.
-    return _closedWorld.extendMaskIfReachesAll(selector, mask);
+    return mask ?? _abstractValueDomain.dynamicType;
   }
 
   void registerMethodInvoke(HInvokeDynamic node) {
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index 652cde7..3fa6e2e 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -161,11 +161,6 @@
   /// Returns `true` if the field [element] is known to be effectively final.
   bool fieldNeverChanges(MemberEntity element);
 
-  /// Extends the [receiver] type for calling [selector] to take live
-  /// `noSuchMethod` handlers into account.
-  AbstractValue extendMaskIfReachesAll(
-      Selector selector, AbstractValue receiver);
-
   /// Returns `true` if [selector] on [receiver] can hit a `call` method on a
   /// subclass of `Closure`.
   ///
@@ -570,16 +565,6 @@
     return abstractValueDomain.locateSingleMember(receiver, selector);
   }
 
-  AbstractValue extendMaskIfReachesAll(
-      Selector selector, AbstractValue receiver) {
-    bool canReachAll = true;
-    if (receiver != null) {
-      canReachAll = backendUsage.isInvokeOnUsed &&
-          abstractValueDomain.needsNoSuchMethodHandling(receiver, selector);
-    }
-    return canReachAll ? abstractValueDomain.dynamicType : receiver;
-  }
-
   bool fieldNeverChanges(MemberEntity element) {
     if (!element.isField) return false;
     if (nativeData.isNativeMember(element)) {
diff --git a/pkg/dart2js_tools/README.md b/pkg/dart2js_tools/README.md
new file mode 100644
index 0000000..4ea3bad
--- /dev/null
+++ b/pkg/dart2js_tools/README.md
@@ -0,0 +1,10 @@
+
+### dart2js\_tools
+
+This package collects tools used with dart2js.
+
+For now, this contains scripts useful to work with obfuscated stack traces in
+production and reading data from the extensions added to source-maps by dart2js
+(like minified names and inlined stack frames).
+
+In the future we plan to merge here tools in the dart2js\_info package as well.
diff --git a/pkg/dart2js_tools/bin/deobfuscate.dart b/pkg/dart2js_tools/bin/deobfuscate.dart
new file mode 100644
index 0000000..69319ea
--- /dev/null
+++ b/pkg/dart2js_tools/bin/deobfuscate.dart
@@ -0,0 +1,151 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+import 'package:source_maps/source_maps.dart';
+import 'package:source_maps/src/utils.dart';
+import 'package:dart2js_tools/src/trace.dart';
+import 'package:dart2js_tools/src/sourcemap_helper.dart';
+import 'package:dart2js_tools/src/name_decoder.dart';
+import 'package:dart2js_tools/src/dart2js_mapping.dart';
+import 'package:dart2js_tools/src/util.dart';
+
+/// Script that deobuscates a stack-trace given in a text file.
+///
+/// To run this script you need 3 or more files:
+///
+///  * A stacktrace file
+///  * The deployed .js file
+///  * The corresponding .map file
+///
+/// There might be more than one .js/.map file if your app is divided in
+/// deferred chunks.
+///
+/// The stack trace file contains a copy/paste of a JavaScript stack trace, of
+/// this form:
+///
+///     at aB.a20 (main.dart.js:71969:32)
+///     at aNk.goV (main.dart.js:72040:52)
+///     at aNk.gfK (main.dart.js:72038:27)
+///     at FE.gtn (main.dart.js:72640:24)
+///     at aBZ.ghN (main.dart.js:72642:24)
+///     at inheritance (main.dart.js:105334:0)
+///     at FE (main.dart.js:5037:18)
+///
+/// If you download the stacktrace from a production service, you can keep the
+/// full URL (including http://....) and this script will simply try to match
+/// the name of the file at the end with a file in the current working
+/// directory.
+///
+/// The .js file must contain a `//# sourceMappingURL=` line at the end, which
+/// tells this script how to determine the name of the source-map file.
+main(List<String> args) {
+  if (args.length != 1) {
+    print('usage: deobfuscate.dart <stack-trace-file>');
+    exit(1);
+  }
+  var sb = new StringBuffer();
+  try {
+    deobfuscate(new File(args[0]).readAsStringSync(), sb);
+  } finally {
+    print('$sb');
+  }
+}
+
+void deobfuscate(trace, StringBuffer sb) {
+  String error = extractErrorMessage(trace);
+  String translatedError;
+  var provider = new CachingFileProvider();
+
+  List<StackTraceLine> jsStackTrace = parseStackTrace(trace);
+
+  for (StackTraceLine line in jsStackTrace) {
+    var uri = resolveUri(line.fileName);
+    var mapping = provider.mappingFor(uri);
+    if (mapping == null) {
+      printPadded('no mapping', line.inlineString, sb);
+      continue;
+    }
+
+    TargetEntry targetEntry = findColumn(line.lineNo - 1, line.columnNo - 1,
+        findLine(mapping.sourceMap, line.lineNo - 1));
+    if (targetEntry == null) {
+      printPadded('no entry', line.inlineString, sb);
+      continue;
+    }
+
+    if (translatedError == null) {
+      translatedError = translate(error, mapping, line, targetEntry);
+      if (translatedError == null) translatedError = '<no error message found>';
+      printPadded(translatedError, error, sb);
+    }
+
+    int offset =
+        provider.fileFor(uri).getOffset(line.lineNo - 1, line.columnNo - 1);
+
+    String nameOf(id) => id != 0 ? mapping.sourceMap.names[id] : null;
+    String urlOf(id) => id != 0 ? mapping.sourceMap.urls[id] : null;
+
+    String fileName = urlOf(targetEntry.sourceUrlId ?? 0);
+    int targetLine = (targetEntry.sourceLine ?? 0) + 1;
+    int targetColumn = (targetEntry.sourceColumn ?? 0) + 1;
+
+    // Expand inlined frames.
+    Map<int, List<FrameEntry>> frames = mapping.frames;
+    List<int> index = mapping.frameIndex;
+    int key = binarySearch(index, (i) => i > offset) - 1;
+    int depth = 0;
+    outer:
+    while (key >= 0) {
+      for (var frame in frames[index[key]].reversed) {
+        if (frame.isEmpty) break outer;
+        if (frame.isPush) {
+          if (depth <= 0) {
+            var mappedLine = new StackTraceLine(
+                frame.inlinedMethodName + "(inlined)",
+                fileName,
+                targetLine,
+                targetColumn);
+            printPadded(mappedLine.inlineString, "", sb);
+            fileName = frame.callUri;
+            targetLine = (frame.callLine ?? 0) + 1;
+            targetColumn = (frame.callColumn ?? 0) + 1;
+          } else {
+            depth--;
+          }
+        }
+        if (frame.isPop) {
+          depth++;
+        }
+      }
+      key--;
+    }
+
+    var functionEntry = findEnclosingFunction(provider, uri, offset);
+    String methodName = nameOf(functionEntry.sourceNameId ?? 0);
+    var mappedLine =
+        new StackTraceLine(methodName, fileName, targetLine, targetColumn);
+    printPadded(mappedLine.inlineString, line.inlineString, sb);
+  }
+}
+
+final green = stdout.hasTerminal ? '[32m' : '';
+final none = stdout.hasTerminal ? '[0m' : '';
+
+printPadded(String mapping, String original, sb) {
+  var len = mapping.length;
+  var s = mapping.indexOf('\n');
+  if (s >= 0) len -= s + 1;
+  var pad = ' ' * (50 - len);
+  sb.writeln('$green$mapping$none$pad ... $original');
+}
+
+Uri resolveUri(String filename) {
+  var uri = Uri.base.resolve(filename);
+  if (uri.scheme == 'http' || uri.scheme == 'https') {
+    filename = uri.path.substring(uri.path.lastIndexOf('/') + 1);
+    uri = Uri.base.resolve(filename);
+  }
+  return uri;
+}
diff --git a/pkg/dart2js_tools/bin/lookup_name.dart b/pkg/dart2js_tools/bin/lookup_name.dart
new file mode 100644
index 0000000..744771b
--- /dev/null
+++ b/pkg/dart2js_tools/bin/lookup_name.dart
@@ -0,0 +1,33 @@
+import 'dart:io';
+import 'dart:convert';
+import 'package:source_maps/source_maps.dart';
+
+main(List<String> args) {
+  if (args.length < 2) {
+    print('usage: read.dart <source-map-file> <name>');
+    exit(1);
+  }
+  var sourcemapFile = new File.fromUri(Uri.base.resolve(args[0]));
+  if (!sourcemapFile.existsSync()) {
+    print('no source-map-file in ${args[0]}');
+    exit(1);
+  }
+  var name = args[1];
+  var json = jsonDecode(sourcemapFile.readAsStringSync());
+  SingleMapping mapping = parseJson(json);
+  var extensions = json['x_org_dartlang_dart2js'];
+  if (extensions == null) {
+    print('source-map file has no dart2js extensions');
+    exit(1);
+  }
+  var minifiedNames = extensions['minified_names'];
+  if (minifiedNames == null) {
+    print('source-map file has no minified names in the dart2js extensions');
+    exit(1);
+  }
+  var gid = minifiedNames['global'][name];
+  if (gid != null) print('$name => ${mapping.names[gid]} (a global name)');
+  var iid = minifiedNames['instance'][name];
+  if (iid != null) print('$name => ${mapping.names[iid]} (an instance name)');
+  if (gid == null && iid == null) print('Name \'$name\' not found.');
+}
diff --git a/pkg/dart2js_tools/bin/read.dart b/pkg/dart2js_tools/bin/read.dart
new file mode 100644
index 0000000..c4c447c
--- /dev/null
+++ b/pkg/dart2js_tools/bin/read.dart
@@ -0,0 +1,17 @@
+import 'dart:io';
+import 'dart:convert';
+import 'package:source_maps/source_maps.dart';
+
+main(List<String> args) {
+  if (args.length != 1) {
+    print('usage: read.dart <source-map-file>');
+    exit(1);
+  }
+
+  var sourcemapFile = new File.fromUri(Uri.base.resolve(args[0]));
+  if (!sourcemapFile.existsSync()) {
+    print('no source-map-file in ${args[0]}');
+  }
+  var bytes = sourcemapFile.readAsBytesSync();
+  parse(utf8.decode(bytes));
+}
diff --git a/pkg/dart2js_tools/bin/show_inline_data.dart b/pkg/dart2js_tools/bin/show_inline_data.dart
new file mode 100644
index 0000000..cc3d5f0
--- /dev/null
+++ b/pkg/dart2js_tools/bin/show_inline_data.dart
@@ -0,0 +1,89 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:io';
+
+import 'package:dart2js_tools/src/util.dart';
+
+/// Script to show a text representation of the inlining data attached to
+/// source-map files.
+///
+/// This expands the push/pop operations and checks simple invariants (e.g. that
+/// the stack is always empty at the beginning of a function).
+main(List<String> args) {
+  if (args.length != 1) {
+    print('usage: show_inline_data.dart <js-file>');
+    exit(1);
+  }
+  var uri = Uri.base.resolve(args[0]);
+  var provider = new CachingFileProvider();
+
+  var mapping = provider.mappingFor(uri);
+  var starts = functionStarts(provider.sourcesFor(uri));
+  var file = provider.fileFor(uri);
+  var frames = mapping.frames;
+  var offsets = frames.keys.toList()..sort();
+  var sb = new StringBuffer();
+  int depth = 0;
+  int lastFunctionStart = null;
+  for (var offset in offsets) {
+    int functionStart = nextFunctionStart(starts, offset, lastFunctionStart);
+    if (lastFunctionStart == null || functionStart > lastFunctionStart) {
+      sb.write('\n${location(starts[functionStart], file)}: function start\n');
+
+      if (depth != 0) {
+        sb.write(
+            "[31m[invalid] function start with non-zero depth: $depth[0m\n");
+      }
+      lastFunctionStart = functionStart;
+    }
+
+    var offsetPrefix = '${location(offset, file)}:';
+    var pad = ' ' * offsetPrefix.length;
+    sb.write(offsetPrefix);
+    bool first = true;
+    for (var frame in frames[offset]) {
+      if (!first) sb.write('$pad');
+      sb.write(' $frame\n');
+      first = false;
+      if (frame.isPush) depth++;
+      if (frame.isPop) depth--;
+      if (frame.isEmpty && depth != 0) {
+        sb.write("[31m[invalid] pop-empty with non-zero depth: $depth[0m\n");
+      }
+      if (!frame.isEmpty && depth == 0) {
+        sb.write("[31m[invalid] non-empty pop with zero depth: $depth[0m\n");
+      }
+      if (depth < 0) {
+        sb.write("[31m[invalid] negative depth: $depth[0m\n");
+      }
+    }
+  }
+  print('$sb');
+}
+
+var _functionDeclarationRegExp = new RegExp(r':( )?function\(');
+
+List<int> functionStarts(String sources) {
+  List<int> result = [];
+  int index = sources.indexOf(_functionDeclarationRegExp);
+  while (index != -1) {
+    result.add(index + 2);
+    index = sources.indexOf(_functionDeclarationRegExp, index + 1);
+  }
+  return result;
+}
+
+int nextFunctionStart(List<int> starts, int offset, int last) {
+  int j = last ?? 0;
+  for (; j < starts.length && starts[j] <= offset; j++);
+  return j - 1;
+}
+
+String location(int offset, file) {
+  var line = file.getLine(offset) + 1;
+  var column = file.getColumn(offset) + 1;
+  var location = '$offset ($line:$column)';
+  return location + (' ' * (16 - location.length));
+}
diff --git a/pkg/dart2js_tools/lib/src/dart2js_mapping.dart b/pkg/dart2js_tools/lib/src/dart2js_mapping.dart
new file mode 100644
index 0000000..2a62e6e
--- /dev/null
+++ b/pkg/dart2js_tools/lib/src/dart2js_mapping.dart
@@ -0,0 +1,133 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Representation of a source-map file with dart2js-specific extensions, and
+/// helper functions to parse them.
+
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:source_maps/source_maps.dart';
+
+import 'util.dart';
+
+/// Representation of a source-map file with dart2js-specific extensions.
+///
+/// Dart2js adds a special section that provides: tables of minified names and a
+/// table of inlining frame data.
+class Dart2jsMapping {
+  final SingleMapping sourceMap;
+
+  final Map<String, String> globalNames = {};
+  final Map<String, String> instanceNames = {};
+  final Map<int, List<FrameEntry>> frames = {};
+  List<int> _frameIndex;
+  List<int> get frameIndex {
+    if (_frameIndex == null) {
+      _frameIndex = frames.keys.toList()..sort();
+    }
+    return _frameIndex;
+  }
+
+  Dart2jsMapping(this.sourceMap, Map json) {
+    var extensions = json['x_org_dartlang_dart2js'];
+    if (extensions == null) return;
+    var minifiedNames = extensions['minified_names'];
+    if (minifiedNames != null) {
+      minifiedNames['global'].forEach((minifiedName, id) {
+        globalNames[minifiedName] = sourceMap.names[id];
+      });
+      minifiedNames['instance'].forEach((minifiedName, id) {
+        instanceNames[minifiedName] = sourceMap.names[id];
+      });
+    }
+    List jsonFrames = extensions['frames'];
+    if (jsonFrames != null) {
+      for (List values in jsonFrames) {
+        if (values.length < 2) {
+          warn("warning: incomplete frame data: $values");
+          continue;
+        }
+        int offset = values[0];
+        List<FrameEntry> entries = frames[offset] ??= [];
+        if (entries.length > 0) {
+          warn("warning: duplicate entries for $offset");
+          continue;
+        }
+        for (int i = 1; i < values.length; i++) {
+          var current = values[i];
+          if (current == -1) {
+            entries.add(new FrameEntry.pop(false));
+          } else if (current == 0) {
+            entries.add(new FrameEntry.pop(true));
+          } else {
+            if (current is List) {
+              if (current.length == 4) {
+                entries.add(new FrameEntry.push(sourceMap.urls[current[0]],
+                    current[1], current[2], sourceMap.names[current[3]]));
+              } else {
+                warn("warning: unexpected entry $current");
+              }
+            } else {
+              warn("warning: unexpected entry $current");
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+class FrameEntry {
+  final String callUri;
+  final int callLine;
+  final int callColumn;
+  final String inlinedMethodName;
+  final bool isEmpty;
+  FrameEntry.push(
+      this.callUri, this.callLine, this.callColumn, this.inlinedMethodName)
+      : isEmpty = false;
+  FrameEntry.pop(this.isEmpty)
+      : callUri = null,
+        callLine = null,
+        callColumn = null,
+        inlinedMethodName = null;
+
+  bool get isPush => callUri != null;
+  bool get isPop => callUri == null;
+
+  toString() {
+    if (isPush)
+      return "push $inlinedMethodName @ $callUri:$callLine:$callColumn";
+    return isEmpty ? 'pop: empty' : 'pop';
+  }
+}
+
+const _marker = "\n//# sourceMappingURL=";
+Dart2jsMapping parseMappingFor(Uri uri) {
+  var file = new File.fromUri(uri);
+  if (!file.existsSync()) {
+    warn('Error: no such file: $uri');
+    return null;
+  }
+  var contents = file.readAsStringSync();
+  var urlIndex = contents.indexOf(_marker);
+  var sourcemapPath;
+  if (urlIndex != -1) {
+    sourcemapPath = contents.substring(urlIndex + _marker.length).trim();
+  } else {
+    warn('Error: source-map url marker not found in $uri\n'
+        '       trying $uri.map');
+    sourcemapPath = '${uri.pathSegments.last}.map';
+  }
+
+  assert(!sourcemapPath.contains('\n'));
+  var sourcemapFile = new File.fromUri(uri.resolve(sourcemapPath));
+  if (!sourcemapFile.existsSync()) {
+    warn('Error: no such file: $sourcemapFile');
+    return null;
+  }
+  var json = jsonDecode(sourcemapFile.readAsStringSync());
+  return new Dart2jsMapping(parseJson(json), json);
+}
diff --git a/pkg/dart2js_tools/lib/src/name_decoder.dart b/pkg/dart2js_tools/lib/src/name_decoder.dart
new file mode 100644
index 0000000..746c511
--- /dev/null
+++ b/pkg/dart2js_tools/lib/src/name_decoder.dart
@@ -0,0 +1,78 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Logic to deobfuscate minified names that appear in error messages.
+
+import 'package:source_maps/source_maps.dart';
+
+import 'dart2js_mapping.dart';
+import 'trace.dart';
+
+String translate(String error, Dart2jsMapping mapping, StackTraceLine line,
+    TargetEntry entry) {
+  for (var decoder in _errorMapDecoders) {
+    var result = decoder.decode(error, mapping, line, entry);
+    // More than one decoder might be applied on a single error message. This
+    // can be useful, for example, if an error contains details about a member
+    // and the type.
+    if (result != null) error = result;
+  }
+  return error;
+}
+
+/// A decoder that matches an error against a regular expression and
+/// uses data from the source-file and source-map file to translate minified
+/// names to un-minified names.
+abstract class ErrorMapDecoder {
+  RegExp get _matcher;
+
+  /// Decode [error] that was reported in [line] and has a corresponding [entry]
+  /// in the source-map file. The provided [mapping] includes additional
+  /// minification data that may be used to decode the error message.
+  String decode(String error, Dart2jsMapping mapping, StackTraceLine line,
+      TargetEntry entry) {
+    if (error == null) return null;
+    var match = _matcher.firstMatch(error);
+    if (match == null) return null;
+    var result = _decodeInternal(match, mapping, line, entry);
+    if (result == null) return null;
+    return '${error.substring(0, match.start)}'
+        '$result${error.substring(match.end, error.length)}';
+  }
+
+  String _decodeInternal(Match match, Dart2jsMapping mapping,
+      StackTraceLine line, TargetEntry entry);
+}
+
+typedef String ErrorDecoder(Match match, Dart2jsMapping mapping,
+    StackTraceLine line, TargetEntry entry);
+
+class MinifiedNameDecoder extends ErrorMapDecoder {
+  final RegExp _matcher = new RegExp("minified:([a-zA-Z]*)");
+
+  String _decodeInternal(Match match, Dart2jsMapping mapping,
+      StackTraceLine line, TargetEntry entry) {
+    var minifiedName = match.group(1);
+    var name = mapping.globalNames[minifiedName];
+    if (name == null) return null;
+    return name;
+  }
+}
+
+class CannotReadPropertyDecoder extends ErrorMapDecoder {
+  final RegExp _matcher = new RegExp("Cannot read property '([^']*)' of");
+
+  String _decodeInternal(Match match, Dart2jsMapping mapping,
+      StackTraceLine line, TargetEntry entry) {
+    var minifiedName = match.group(1);
+    var name = mapping.instanceNames[minifiedName];
+    if (name == null) return null;
+    return "Cannot read property '$name' of";
+  }
+}
+
+List<ErrorMapDecoder> _errorMapDecoders = [
+  new MinifiedNameDecoder(),
+  new CannotReadPropertyDecoder()
+];
diff --git a/pkg/dart2js_tools/lib/src/sourcemap_helper.dart b/pkg/dart2js_tools/lib/src/sourcemap_helper.dart
new file mode 100644
index 0000000..7e01953
--- /dev/null
+++ b/pkg/dart2js_tools/lib/src/sourcemap_helper.dart
@@ -0,0 +1,50 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Utility functions to make it easier to work with source-map files.
+import 'package:source_span/source_span.dart';
+import 'package:source_maps/source_maps.dart';
+import 'package:source_maps/src/utils.dart';
+import 'util.dart' show FileProvider;
+
+/// Search backwards in [sources] for a function declaration that includes the
+/// [start] offset.
+TargetEntry findEnclosingFunction(FileProvider provider, Uri uri, int start) {
+  String sources = provider.sourcesFor(uri);
+  if (sources == null) return null;
+  int index = sources.lastIndexOf(': function(', start);
+  if (index < 0) index = sources.lastIndexOf(':function(', start);
+  if (index < 0) return null;
+  index += 2;
+  SourceFile file = provider.fileFor(uri);
+  SingleMapping mapping = provider.mappingFor(uri).sourceMap;
+  var line = file.getLine(index);
+  var lineEntry = findLine(mapping, line);
+  return findColumn(line, file.getColumn(index), lineEntry);
+}
+
+/// Returns [TargetLineEntry] which includes the location in the target [line]
+/// number. In particular, the resulting entry is the last entry whose line
+/// number is lower or equal to [line].
+///
+/// Copied from [SingleMapping._findLine].
+TargetLineEntry findLine(SingleMapping sourceMap, int line) {
+  int index = binarySearch(sourceMap.lines, (e) => e.line > line);
+  return (index <= 0) ? null : sourceMap.lines[index - 1];
+}
+
+/// Returns [TargetEntry] which includes the location denoted by
+/// [line], [column]. If [lineEntry] corresponds to [line], then this will be
+/// the last entry whose column is lower or equal than [column]. If
+/// [lineEntry] corresponds to a line prior to [line], then the result will be
+/// the very last entry on that line.
+///
+/// Copied from [SingleMapping._findColumn].
+TargetEntry findColumn(int line, int column, TargetLineEntry lineEntry) {
+  if (lineEntry == null || lineEntry.entries.length == 0) return null;
+  if (lineEntry.line != line) return lineEntry.entries.last;
+  var entries = lineEntry.entries;
+  int index = binarySearch(entries, (e) => e.column > column);
+  return (index <= 0) ? null : entries[index - 1];
+}
diff --git a/pkg/dart2js_tools/lib/src/trace.dart b/pkg/dart2js_tools/lib/src/trace.dart
new file mode 100644
index 0000000..ad12d8f
--- /dev/null
+++ b/pkg/dart2js_tools/lib/src/trace.dart
@@ -0,0 +1,146 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Representation of stack traces and logic to parse d8 stack traces.
+// TODO(sigmund): we should delete this implementation and instead:
+// - switch to use the stack_trace package
+// - add support non-d8 frames
+// - add support for secondary regexps to detect stranger frames (like eval frames)
+
+import 'package:path/path.dart' as p;
+
+import 'util.dart';
+
+/// Represents a stack trace line.
+class StackTraceLine {
+  String methodName;
+  String fileName;
+  int lineNo;
+  int columnNo;
+
+  StackTraceLine(this.methodName, this.fileName, this.lineNo, this.columnNo);
+
+  /// Creates a [StackTraceLine] by parsing a d8 stack trace line [text]. The
+  /// expected formats are
+  ///
+  ///     at <methodName>(<fileName>:<lineNo>:<columnNo>)
+  ///     at <methodName>(<fileName>:<lineNo>)
+  ///     at <methodName>(<fileName>)
+  ///     at <fileName>:<lineNo>:<columnNo>
+  ///     at <fileName>:<lineNo>
+  ///     at <fileName>
+  ///
+  factory StackTraceLine.fromText(String text) {
+    text = text.trim();
+    assert(text.startsWith('at '));
+    text = text.substring('at '.length);
+    String methodName;
+    int endParen = text.indexOf(')');
+    if (endParen > 0) {
+      int nameEnd = text.indexOf('(');
+      if (nameEnd != -1) {
+        methodName = text.substring(0, nameEnd).trim();
+        text = text.substring(nameEnd + 1, endParen).trim();
+      } else {
+        warn('Missing left-paren in: $text');
+      }
+    }
+    int lineNo;
+    int columnNo;
+    String fileName;
+    int lastColon = text.lastIndexOf(':');
+    if (lastColon != -1) {
+      int lastValue = int.tryParse(text.substring(lastColon + 1));
+      if (lastValue != null) {
+        int secondToLastColon = text.lastIndexOf(':', lastColon - 1);
+        if (secondToLastColon != -1) {
+          int secondToLastValue =
+              int.tryParse(text.substring(secondToLastColon + 1, lastColon));
+          if (secondToLastValue != null) {
+            lineNo = secondToLastValue;
+            columnNo = lastValue;
+            fileName = text.substring(0, secondToLastColon);
+          } else {
+            lineNo = lastValue;
+            fileName = text.substring(0, lastColon);
+          }
+        } else {
+          lineNo = lastValue;
+          fileName = text.substring(0, lastColon);
+        }
+      } else {
+        fileName = text;
+      }
+    } else {
+      fileName = text;
+    }
+    return new StackTraceLine(methodName, fileName, lineNo, columnNo ?? 1);
+  }
+
+  String toString() {
+    StringBuffer sb = new StringBuffer();
+    sb.write('  at ');
+    if (methodName != null) {
+      sb.write(methodName);
+      sb.write(' (');
+      sb.write(fileName ?? '?');
+      sb.write(':');
+      sb.write(lineNo);
+      sb.write(':');
+      sb.write(columnNo);
+      sb.write(')');
+    } else {
+      sb.write(fileName ?? '?');
+      sb.write(':');
+      sb.write(lineNo);
+      sb.write(':');
+      sb.write(columnNo);
+    }
+    return sb.toString();
+  }
+
+  String get inlineString {
+    StringBuffer sb = new StringBuffer();
+    var padding = 20;
+    if (methodName != null) {
+      sb.write(methodName);
+      padding -= (methodName.length);
+      if (padding <= 0) {
+        sb.write('\n');
+        padding = 20;
+      }
+    }
+    sb.write(' ' * padding);
+    if (fileName != null) {
+      sb.write(p.url.basename(fileName));
+      sb.write(' ');
+      sb.write(lineNo);
+      sb.write(':');
+      sb.write(columnNo);
+    }
+    return sb.toString();
+  }
+}
+
+List<StackTraceLine> parseStackTrace(String trace) {
+  List<String> lines = trace.split(new RegExp(r'(\r|\n|\r\n)'));
+  List<StackTraceLine> jsStackTrace = <StackTraceLine>[];
+  for (String line in lines) {
+    line = line.trim();
+    if (line.startsWith('at ')) {
+      jsStackTrace.add(new StackTraceLine.fromText(line));
+    }
+  }
+  return jsStackTrace;
+}
+
+/// Returns the portion of the output that corresponds to the error message.
+///
+/// Note: some errors can span multiple lines.
+String extractErrorMessage(String trace) {
+  var firstStackFrame = trace.indexOf(new RegExp('\n +at'));
+  if (firstStackFrame == -1) return null;
+  var errorMarker = trace.indexOf('^') + 1;
+  return trace.substring(errorMarker, firstStackFrame).trim();
+}
diff --git a/pkg/dart2js_tools/lib/src/util.dart b/pkg/dart2js_tools/lib/src/util.dart
new file mode 100644
index 0000000..947c4ad
--- /dev/null
+++ b/pkg/dart2js_tools/lib/src/util.dart
@@ -0,0 +1,31 @@
+import 'dart:io';
+import 'package:source_span/source_span.dart';
+import 'dart2js_mapping.dart';
+
+abstract class FileProvider {
+  String sourcesFor(Uri uri);
+  SourceFile fileFor(Uri uri);
+  Dart2jsMapping mappingFor(Uri uri);
+}
+
+class CachingFileProvider implements FileProvider {
+  final Map<Uri, String> _sources = {};
+  final Map<Uri, SourceFile> _files = {};
+  final Map<Uri, Dart2jsMapping> _mappings = {};
+
+  String sourcesFor(Uri uri) =>
+      _sources[uri] ??= new File.fromUri(uri).readAsStringSync();
+
+  SourceFile fileFor(Uri uri) =>
+      _files[uri] ??= new SourceFile.fromString(sourcesFor(uri));
+
+  Dart2jsMapping mappingFor(Uri uri) => _mappings[uri] ??= parseMappingFor(uri);
+}
+
+warn(String message) {
+  if (_seenMessages.add(message)) {
+    print(message);
+  }
+}
+
+Set<String> _seenMessages = new Set<String>();
diff --git a/pkg/dart2js_tools/pubspec.yaml b/pkg/dart2js_tools/pubspec.yaml
new file mode 100644
index 0000000..caf79e9
--- /dev/null
+++ b/pkg/dart2js_tools/pubspec.yaml
@@ -0,0 +1,9 @@
+name: dart2js_tools
+version: 0.0.1
+description: >
+  Collection of tools used with dart2js including analyzing compilation
+  information, deobfuscation of stack-traces and minified names.
+dependencies:
+  source_maps: ^0.10.7
+environment:
+  sdk: '>=2.0.0 <3.0.0'
diff --git a/pkg/front_end/lib/src/base/processed_options.dart b/pkg/front_end/lib/src/base/processed_options.dart
index 4af1feb..c4086f7 100644
--- a/pkg/front_end/lib/src/base/processed_options.dart
+++ b/pkg/front_end/lib/src/base/processed_options.dart
@@ -10,9 +10,8 @@
 
 import 'package:kernel/kernel.dart' show CanonicalName, Component, Location;
 
-import 'package:kernel/target/targets.dart' show Target, TargetFlags;
-
-import 'package:kernel/target/vm.dart' show VmTarget;
+import 'package:kernel/target/targets.dart'
+    show NoneTarget, Target, TargetFlags;
 
 import 'package:package_config/packages.dart' show Packages;
 
@@ -323,7 +322,7 @@
 
   Target _target;
   Target get target => _target ??=
-      _raw.target ?? new VmTarget(new TargetFlags(strongMode: strongMode));
+      _raw.target ?? new NoneTarget(new TargetFlags(strongMode: strongMode));
 
   /// Get an outline component that summarizes the SDK, if any.
   // TODO(sigmund): move, this doesn't feel like an "option".
@@ -689,12 +688,16 @@
   String get dart2jsCode => _original.code.dart2jsCode;
 
   SourceSpan get span {
-    if (_original.charOffset == -1) {
-      if (_original.uri == null) return null;
-      return new SourceLocation(0, sourceUrl: _original.uri).pointSpan();
+    var uri = _original.uri;
+    var offset = _original.charOffset;
+    if (offset == -1) {
+      if (uri == null) return null;
+      return new SourceLocation(0, sourceUrl: uri).pointSpan();
     }
-    return new SourceLocation(_original.charOffset, sourceUrl: _original.uri)
-        .pointSpan();
+    return new SourceSpan(
+        new SourceLocation(offset, sourceUrl: uri),
+        new SourceLocation(offset + _original.length, sourceUrl: uri),
+        'X' * _original.length);
   }
 
   _CompilationMessage(this._original, this.severity);
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
index 8c28c44..88baf99 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -2107,7 +2107,6 @@
     const Code<Message Function(String name)>(
         "DuplicatedNamePreviouslyUsedCause",
         templateDuplicatedNamePreviouslyUsedCause,
-        analyzerCode: "REFERENCED_BEFORE_DECLARATION",
         severity: Severity.context);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -3279,6 +3278,43 @@
     message: r"""Illegal assignment to non-assignable expression.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeIllegalAsyncGeneratorReturnType =
+    messageIllegalAsyncGeneratorReturnType;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageIllegalAsyncGeneratorReturnType = const MessageCode(
+    "IllegalAsyncGeneratorReturnType",
+    analyzerCode: "ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE",
+    dart2jsCode: "*fatal*",
+    severity: Severity.error,
+    message:
+        r"""Functions marked 'async*' must have a return type assignable to 'Stream'.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeIllegalAsyncGeneratorVoidReturnType =
+    messageIllegalAsyncGeneratorVoidReturnType;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageIllegalAsyncGeneratorVoidReturnType =
+    const MessageCode("IllegalAsyncGeneratorVoidReturnType",
+        dart2jsCode: "*fatal*",
+        severity: Severity.error,
+        message:
+            r"""Functions marked 'async*' can't have return type 'void'.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeIllegalAsyncReturnType = messageIllegalAsyncReturnType;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageIllegalAsyncReturnType = const MessageCode(
+    "IllegalAsyncReturnType",
+    analyzerCode: "ILLEGAL_ASYNC_RETURN_TYPE",
+    dart2jsCode: "*fatal*",
+    severity: Severity.error,
+    message:
+        r"""Functions marked 'async' must have a return type assignable to 'Future'.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<Message Function(String name)> templateIllegalMixin =
     const Template<Message Function(String name)>(
         messageTemplate: r"""The type '#name' can't be mixed in.""",
@@ -3343,6 +3379,30 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeIllegalSyncGeneratorReturnType =
+    messageIllegalSyncGeneratorReturnType;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageIllegalSyncGeneratorReturnType = const MessageCode(
+    "IllegalSyncGeneratorReturnType",
+    analyzerCode: "ILLEGAL_SYNC_GENERATOR_RETURN_TYPE",
+    dart2jsCode: "*fatal*",
+    severity: Severity.error,
+    message:
+        r"""Functions marked 'sync*' must have a return type assignable to 'Iterable'.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeIllegalSyncGeneratorVoidReturnType =
+    messageIllegalSyncGeneratorVoidReturnType;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageIllegalSyncGeneratorVoidReturnType = const MessageCode(
+    "IllegalSyncGeneratorVoidReturnType",
+    dart2jsCode: "*fatal*",
+    severity: Severity.error,
+    message: r"""Functions marked 'sync*' can't have return type 'void'.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeImplementsBeforeExtends = messageImplementsBeforeExtends;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -6746,7 +6806,8 @@
             count2)> templateTooManyArguments = const Template<
         Message Function(int count, int count2)>(
     messageTemplate:
-        r"""Too many positional arguments: #count allowed, #count2 given.""",
+        r"""Too many positional arguments: #count allowed, but #count2 found.""",
+    tipTemplate: r"""Try removing the extra positional arguments.""",
     withArguments: _withArgumentsTooManyArguments);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -6761,7 +6822,39 @@
 Message _withArgumentsTooManyArguments(int count, int count2) {
   return new Message(codeTooManyArguments,
       message:
-          """Too many positional arguments: ${count} allowed, ${count2} given.""",
+          """Too many positional arguments: ${count} allowed, but ${count2} found.""",
+      tip: """Try removing the extra positional arguments.""",
+      arguments: {'count': count, 'count2': count2});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        int count,
+        int
+            count2)> templateTooManyArgumentsCouldBeNamed = const Template<
+        Message Function(int count, int count2)>(
+    messageTemplate:
+        r"""Too many positional arguments: #count allowed, but #count2 found.""",
+    tipTemplate:
+        r"""Try removing the extra positional arguments or specifying the name for named arguments.""",
+    withArguments: _withArgumentsTooManyArgumentsCouldBeNamed);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(int count, int count2)>
+    codeTooManyArgumentsCouldBeNamed =
+    const Code<Message Function(int count, int count2)>(
+        "TooManyArgumentsCouldBeNamed", templateTooManyArgumentsCouldBeNamed,
+        analyzerCode: "EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED",
+        dart2jsCode: "*fatal*",
+        severity: Severity.errorLegacyWarning);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsTooManyArgumentsCouldBeNamed(int count, int count2) {
+  return new Message(codeTooManyArgumentsCouldBeNamed,
+      message:
+          """Too many positional arguments: ${count} allowed, but ${count2} found.""",
+      tip: """Try removing the extra positional arguments or specifying the name for named arguments.""",
       arguments: {'count': count, 'count2': count2});
 }
 
diff --git a/pkg/front_end/lib/src/fasta/import.dart b/pkg/front_end/lib/src/fasta/import.dart
index 91165d3..b484601 100644
--- a/pkg/front_end/lib/src/fasta/import.dart
+++ b/pkg/front_end/lib/src/fasta/import.dart
@@ -39,7 +39,7 @@
 
   // The LibraryBuilder for the imported library ('imported') may be null when
   // this field is set.
-  final Uri nativeImportUri;
+  final String nativeImportPath;
 
   Import(
       this.importer,
@@ -51,14 +51,14 @@
       this.charOffset,
       this.prefixCharOffset,
       int importIndex,
-      {this.nativeImportUri})
+      {this.nativeImportPath})
       : prefixBuilder = createPrefixBuilder(prefix, importer, imported,
             combinators, deferred, charOffset, prefixCharOffset, importIndex);
 
   Uri get fileUri => importer.fileUri;
 
   void finalizeImports(LibraryBuilder importer) {
-    if (nativeImportUri != null) return;
+    if (nativeImportPath != null) return;
     void Function(String, Declaration) add;
     if (prefixBuilder == null) {
       add = (String name, Declaration member) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 00ccdb9..7c85c12 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -193,6 +193,8 @@
   /// second in the formal parameter scope.
   bool inInitializer = false;
 
+  bool inFieldInitializer = false;
+
   bool inCatchClause = false;
 
   bool inCatchBlock = false;
@@ -627,11 +629,13 @@
   void beginInitializer(Token token) {
     debugEvent("beginInitializer");
     inInitializer = true;
+    inFieldInitializer = true;
   }
 
   @override
   void endInitializer(Token token) {
     debugEvent("endInitializer");
+    inFieldInitializer = false;
     assert(!inInitializer);
     final member = this.member;
     Object node = pop();
@@ -702,6 +706,71 @@
     _typeInferrer.inferFunctionBody(
         this, _computeReturnTypeContext(member), asyncModifier, body);
 
+    // For async, async*, and sync* functions with declared return types, we need
+    // to determine whether those types are valid.
+    // TODO(hillerstrom): currently, we need to check whether [strongMode] is
+    // enabled for two reasons:
+    // 1) the [isSubtypeOf] predicate produces false-negatives when [strongMode]
+    // is false.
+    // 2) the member [_typeInferrer.typeSchemaEnvironment] might be null when
+    // [strongMode] is false. This particular behaviour can be observed when
+    // running the fasta perf benchmarks.
+    bool strongMode = library.loader.target.strongMode;
+    if (strongMode && builder.returnType != null) {
+      DartType returnType = builder.function.returnType;
+      // We use the same trick in each case below. For example to decide whether
+      // Future<T> <: [returnType] for every T, we rely on Future<Bot> and
+      // transitivity of the subtyping relation because Future<Bot> <: Future<T>
+      // for every T.
+      bool Function(DartType, DartType) isSubtypeOf = (DartType subtype,
+              DartType supertype) =>
+          _typeInferrer.typeSchemaEnvironment.isSubtypeOf(subtype, supertype);
+
+      // Determine whether there is a problem. We use [problem == null] to
+      // signal success.
+      Message problem;
+      switch (asyncModifier) {
+        case AsyncMarker.Async:
+          DartType futureBottomType = library.loader.futureOfBottom;
+          if (!isSubtypeOf(futureBottomType, returnType)) {
+            problem = fasta.messageIllegalAsyncReturnType;
+          }
+          break;
+
+        case AsyncMarker.AsyncStar:
+          DartType streamBottomType = library.loader.streamOfBottom;
+          if (returnType is VoidType) {
+            problem = fasta.messageIllegalAsyncGeneratorVoidReturnType;
+          } else if (!isSubtypeOf(streamBottomType, returnType)) {
+            problem = fasta.messageIllegalAsyncGeneratorReturnType;
+          }
+          break;
+
+        case AsyncMarker.SyncStar:
+          DartType iterableBottomType = library.loader.iterableOfBottom;
+          if (returnType is VoidType) {
+            problem = fasta.messageIllegalSyncGeneratorVoidReturnType;
+          } else if (!isSubtypeOf(iterableBottomType, returnType)) {
+            problem = fasta.messageIllegalSyncGeneratorReturnType;
+          }
+          break;
+
+        case AsyncMarker.Sync:
+          break; // skip
+        case AsyncMarker.SyncYielding:
+          unexpected("async, async*, sync, or sync*", "$asyncModifier",
+              member.charOffset, uri);
+          break;
+      }
+
+      if (problem != null) {
+        // TODO(hillerstrom): once types get annotated with location
+        // information, we can improve the quality of the error message by
+        // using the offset of [returnType] (and the length of its name).
+        addProblem(problem, member.charOffset, member.name.length);
+      }
+    }
+
     // We finished the invalid body inference, desugar it into its error.
     if (body is InvalidStatementJudgment) {
       InvalidStatementJudgment judgment = body;
@@ -791,7 +860,8 @@
       } else if (resolvedTarget is Constructor &&
           resolvedTarget.enclosingClass.isAbstract) {
         replacementNode = evaluateArgumentsBefore(
-            forest.arguments(invocation.arguments.positional, null,
+            forest.arguments(
+                invocation.arguments.positional, noLocation, noLocation,
                 types: invocation.arguments.types,
                 named: invocation.arguments.named),
             buildAbstractClassInstantiationError(
@@ -812,7 +882,8 @@
               throwNoSuchMethodError(
                   forest.literalNull(null)..fileOffset = invocation.fileOffset,
                   errorName,
-                  forest.arguments(invocation.arguments.positional, null,
+                  forest.arguments(
+                      invocation.arguments.positional, noLocation, noLocation,
                       types: invocation.arguments.types,
                       named: invocation.arguments.named),
                   initialTarget.fileOffset));
@@ -830,7 +901,8 @@
 
           replacementNode = buildStaticInvocation(
               resolvedTarget,
-              forest.arguments(invocation.arguments.positional, null,
+              forest.arguments(
+                  invocation.arguments.positional, noLocation, noLocation,
                   types: invocation.arguments.types,
                   named: invocation.arguments.named),
               constness: invocation.isConst
@@ -969,18 +1041,22 @@
       /// >unless the enclosing class is class Object.
       Constructor superTarget = lookupConstructor(emptyName, isSuper: true);
       Initializer initializer;
-      Arguments arguments = forest.argumentsEmpty(noLocation);
+      Arguments arguments = forest.argumentsEmpty(noLocation, noLocation);
       if (superTarget == null ||
           checkArgumentsForFunction(superTarget.function, arguments,
                   builder.charOffset, const <TypeParameter>[]) !=
               null) {
         String superclass = classBuilder.supertype.fullNameForErrors;
+        int length = constructor.name.name.length;
+        if (length == 0) {
+          length = (constructor.parent as Class).name.length;
+        }
         initializer = buildInvalidInitializer(
             buildCompileTimeError(
                 fasta.templateSuperclassHasNoDefaultConstructor
                     .withArguments(superclass),
                 builder.charOffset,
-                constructor.name.name.length),
+                length),
             builder.charOffset);
       } else {
         initializer = buildSuperInitializer(
@@ -1034,11 +1110,12 @@
           arguments.getRange(0, firstNamedArgumentIndex));
       List<NamedExpression> named = new List<NamedExpression>.from(
           arguments.getRange(firstNamedArgumentIndex, arguments.length));
-      push(forest.arguments(positional, beginToken, named: named));
+      push(forest.arguments(positional, beginToken, endToken, named: named));
     } else {
       // TODO(kmillikin): Find a way to avoid allocating a second list in the
       // case where there were no named arguments, which is a common one.
-      push(forest.arguments(new List<Expression>.from(arguments), beginToken));
+      push(forest.arguments(
+          new List<Expression>.from(arguments), beginToken, endToken));
     }
   }
 
@@ -1058,7 +1135,7 @@
   @override
   void handleSend(Token beginToken, Token endToken) {
     debugEvent("Send");
-    Arguments arguments = pop();
+    ArgumentsJudgment arguments = pop();
     List<DartType> typeArguments = pop();
     Object receiver = pop();
     if (arguments != null && typeArguments != null) {
@@ -1083,7 +1160,7 @@
   }
 
   @override
-  finishSend(Object receiver, Arguments arguments, int charOffset) {
+  finishSend(Object receiver, ArgumentsJudgment arguments, int charOffset) {
     if (receiver is Generator) {
       return receiver.doInvocation(charOffset, arguments);
     } else {
@@ -1178,8 +1255,11 @@
           fasta.templateInvalidOperator.withArguments(token), token.charOffset,
           length: token.length);
     } else {
-      Expression result = buildMethodInvocation(a, new Name(operator),
-          forest.arguments(<Expression>[b], noLocation), token.charOffset,
+      Expression result = buildMethodInvocation(
+          a,
+          new Name(operator),
+          forest.arguments(<Expression>[b], noLocation, noLocation),
+          token.charOffset,
           // This *could* be a constant expression, we can't know without
           // evaluating [a] and [b].
           isConstantExpression: !isSuper,
@@ -1519,7 +1599,10 @@
       declaration =
           classBuilder.origin.findStaticBuilder(name, charOffset, uri, library);
     }
-    if (declaration != null && member.isField && declaration.isInstanceMember) {
+    if (declaration != null &&
+        declaration.isInstanceMember &&
+        inFieldInitializer &&
+        !inInitializer) {
       return new IncompleteErrorGenerator(this, token, declaration.target,
           fasta.templateThisAccessInFieldInitializer.withArguments(name));
     }
@@ -1848,8 +1931,14 @@
   }
 
   @override
+  void beginFieldInitializer(Token token) {
+    inFieldInitializer = true;
+  }
+
+  @override
   void endFieldInitializer(Token assignmentOperator, Token token) {
     debugEvent("FieldInitializer");
+    inFieldInitializer = false;
     assert(assignmentOperator.stringValue == "=");
     push(popForValue());
   }
@@ -2197,7 +2286,7 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
+  void handleType(Token beginToken) {
     // TODO(ahe): The scope is wrong for return types of generic functions.
     debugEvent("Type");
     List<DartType> arguments = pop();
@@ -2261,7 +2350,7 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token endToken) {
+  void endFunctionType(Token functionToken) {
     debugEvent("FunctionType");
     FormalParameters<Expression, Statement, Arguments> formals = pop();
     DartType returnType = pop();
@@ -2622,12 +2711,13 @@
       push(new SuperIndexedAccessGenerator(
           this,
           openSquareBracket,
+          closeSquareBracket,
           index,
           lookupInstanceMember(indexGetName, isSuper: true),
           lookupInstanceMember(indexSetName, isSuper: true)));
     } else {
-      push(IndexedAccessGenerator.make(
-          this, openSquareBracket, toValue(receiver), index, null, null));
+      push(IndexedAccessGenerator.make(this, openSquareBracket,
+          closeSquareBracket, toValue(receiver), index, null, null));
     }
   }
 
@@ -2663,7 +2753,7 @@
         }
       }
       push(buildMethodInvocation(receiverValue, new Name(operator),
-          forest.argumentsEmpty(noLocation), token.charOffset,
+          forest.argumentsEmpty(noLocation, noLocation), token.charOffset,
           // This *could* be a constant expression, we can't know without
           // evaluating [receiver].
           isConstantExpression: !isSuper,
@@ -2779,7 +2869,7 @@
   }
 
   @override
-  Expression buildStaticInvocation(Member target, Arguments arguments,
+  Expression buildStaticInvocation(Member target, ArgumentsJudgment arguments,
       {Constness constness: Constness.implicit,
       int charOffset: -1,
       int charLength: noLength,
@@ -2856,21 +2946,31 @@
   }
 
   @override
-  LocatedMessage checkArgumentsForFunction(FunctionNode function,
-      Arguments arguments, int offset, List<TypeParameter> typeParameters) {
+  LocatedMessage checkArgumentsForFunction(
+      FunctionNode function,
+      ArgumentsJudgment arguments,
+      int offset,
+      List<TypeParameter> typeParameters) {
     if (forest.argumentsPositional(arguments).length <
         function.requiredParameterCount) {
+      var argsOffset = arguments.fileOffset;
+      var argsLength = arguments.fileEndOffset - argsOffset;
       return fasta.templateTooFewArguments
           .withArguments(function.requiredParameterCount,
               forest.argumentsPositional(arguments).length)
-          .withLocation(uri, offset, noLength);
+          .withLocation(uri, argsOffset, argsLength);
     }
     if (forest.argumentsPositional(arguments).length >
         function.positionalParameters.length) {
-      return fasta.templateTooManyArguments
+      var argsOffset = arguments.fileOffset;
+      var argsLength = arguments.fileEndOffset - argsOffset;
+      var template = function.namedParameters.isNotEmpty
+          ? fasta.templateTooManyArgumentsCouldBeNamed
+          : fasta.templateTooManyArguments;
+      return template
           .withArguments(function.positionalParameters.length,
               forest.argumentsPositional(arguments).length)
-          .withLocation(uri, offset, noLength);
+          .withLocation(uri, argsOffset, argsLength);
     }
     List<Object> named = forest.argumentsNamed(arguments);
     if (named.isNotEmpty) {
@@ -2900,20 +3000,27 @@
 
   @override
   LocatedMessage checkArgumentsForType(
-      FunctionType function, Arguments arguments, int offset) {
+      FunctionType function, ArgumentsJudgment arguments, int offset) {
     if (forest.argumentsPositional(arguments).length <
         function.requiredParameterCount) {
+      var argsOffset = arguments.fileOffset;
+      var argsLength = arguments.fileEndOffset - argsOffset;
       return fasta.templateTooFewArguments
           .withArguments(function.requiredParameterCount,
               forest.argumentsPositional(arguments).length)
-          .withLocation(uri, offset, noLength);
+          .withLocation(uri, argsOffset, argsLength);
     }
     if (forest.argumentsPositional(arguments).length >
         function.positionalParameters.length) {
-      return fasta.templateTooManyArguments
+      var argsOffset = arguments.fileOffset;
+      var argsLength = arguments.fileEndOffset - argsOffset;
+      var template = function.namedParameters.isNotEmpty
+          ? fasta.templateTooManyArgumentsCouldBeNamed
+          : fasta.templateTooManyArguments;
+      return template
           .withArguments(function.positionalParameters.length,
               forest.argumentsPositional(arguments).length)
-          .withLocation(uri, offset, noLength);
+          .withLocation(uri, argsOffset, argsLength);
     }
     List<Object> named = forest.argumentsNamed(arguments);
     if (named.isNotEmpty) {
@@ -3071,7 +3178,7 @@
               target.function.typeParameters.length !=
                   forest.argumentsTypeArguments(arguments).length) {
             arguments = forest.arguments(
-                forest.argumentsPositional(arguments), null,
+                forest.argumentsPositional(arguments), noLocation, noLocation,
                 named: forest.argumentsNamed(arguments),
                 types: new List<DartType>.filled(
                     target.function.typeParameters.length, const DynamicType(),
@@ -3129,7 +3236,8 @@
   void handleThisExpression(Token token, IdentifierContext context) {
     debugEvent("ThisExpression");
     if (context.isScopeReference && isInstanceContext) {
-      push(new ThisAccessGenerator(this, token, inInitializer));
+      push(new ThisAccessGenerator(
+          this, token, inInitializer, inFieldInitializer));
     } else {
       push(new IncompleteErrorGenerator(
           this, token, null, fasta.messageThisAsIdentifier));
@@ -3142,7 +3250,9 @@
     if (context.isScopeReference && isInstanceContext) {
       Member member = this.member.target;
       member.transformerFlags |= TransformerFlag.superCalls;
-      push(new ThisAccessGenerator(this, token, inInitializer, isSuper: true));
+      push(new ThisAccessGenerator(
+          this, token, inInitializer, inFieldInitializer,
+          isSuper: true));
     } else {
       push(new IncompleteErrorGenerator(
           this, token, null, fasta.messageSuperAsIdentifier));
@@ -4057,7 +4167,7 @@
           forest.literalString("${location?.file ?? uri}", null)
             ..fileOffset = charOffset,
           forest.literalInt(location?.line ?? 0, null)..fileOffset = charOffset,
-        ], noLocation),
+        ], noLocation, noLocation),
         charOffset: charOffset));
   }
 
@@ -4072,7 +4182,7 @@
         constructor.target,
         forest.arguments(<Expression>[
           forest.literalString(className, null)..fileOffset = charOffset
-        ], noLocation)));
+        ], noLocation, noLocation)));
   }
 
   Statement buildCompileTimeErrorStatement(Message message, int charOffset,
@@ -4175,7 +4285,7 @@
                 constructor.target,
                 forest.arguments(<Expression>[
                   forest.literalString(name, null)..fileOffset = offset
-                ], noLocation),
+                ], noLocation, noLocation),
                 charOffset: offset))))
           ..fileOffset = offset;
       } else {
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index dd98021..5678166 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -64,6 +64,7 @@
 import 'kernel_ast_api.dart'
     show
         Arguments,
+        ArgumentsJudgment,
         DartType,
         DynamicType,
         Expression,
@@ -202,7 +203,7 @@
   }
 
   /* Expression | Generator | Initializer */ doInvocation(
-      int offset, Arguments arguments);
+      int offset, ArgumentsJudgment arguments);
 
   /* Expression | Generator */ buildPropertyAccess(
       IncompleteSendGenerator send, int operatorOffset, bool isNullAware) {
@@ -373,28 +374,30 @@
 abstract class IndexedAccessGenerator implements Generator {
   factory IndexedAccessGenerator.internal(
       ExpressionGeneratorHelper helper,
-      Token token,
+      Token openSquareBracket,
+      Token closeSquareBracket,
       Expression receiver,
       Expression index,
       Procedure getter,
       Procedure setter) {
-    return helper.forest
-        .indexedAccessGenerator(helper, token, receiver, index, getter, setter);
+    return helper.forest.indexedAccessGenerator(helper, openSquareBracket,
+        closeSquareBracket, receiver, index, getter, setter);
   }
 
   static Generator make(
       ExpressionGeneratorHelper helper,
-      Token token,
+      Token openSquareBracket,
+      Token closeSquareBracket,
       Expression receiver,
       Expression index,
       Procedure getter,
       Procedure setter) {
     if (helper.forest.isThisExpression(receiver)) {
       return new ThisIndexedAccessGenerator(
-          helper, token, index, getter, setter);
+          helper, openSquareBracket, closeSquareBracket, index, getter, setter);
     } else {
-      return new IndexedAccessGenerator.internal(
-          helper, token, receiver, index, getter, setter);
+      return new IndexedAccessGenerator.internal(helper, openSquareBracket,
+          closeSquareBracket, receiver, index, getter, setter);
     }
   }
 
@@ -411,10 +414,15 @@
 /// Special case of [IndexedAccessGenerator] to avoid creating an indirect
 /// access to 'this'.
 abstract class ThisIndexedAccessGenerator implements Generator {
-  factory ThisIndexedAccessGenerator(ExpressionGeneratorHelper helper,
-      Token token, Expression index, Procedure getter, Procedure setter) {
-    return helper.forest
-        .thisIndexedAccessGenerator(helper, token, index, getter, setter);
+  factory ThisIndexedAccessGenerator(
+      ExpressionGeneratorHelper helper,
+      Token openSquareBracket,
+      Token closeSquareBracket,
+      Expression index,
+      Procedure getter,
+      Procedure setter) {
+    return helper.forest.thisIndexedAccessGenerator(
+        helper, openSquareBracket, closeSquareBracket, index, getter, setter);
   }
 
   @override
@@ -428,10 +436,15 @@
 }
 
 abstract class SuperIndexedAccessGenerator implements Generator {
-  factory SuperIndexedAccessGenerator(ExpressionGeneratorHelper helper,
-      Token token, Expression index, Member getter, Member setter) {
-    return helper.forest
-        .superIndexedAccessGenerator(helper, token, index, getter, setter);
+  factory SuperIndexedAccessGenerator(
+      ExpressionGeneratorHelper helper,
+      Token openSquareBracket,
+      Token closeSquareBracket,
+      Expression index,
+      Member getter,
+      Member setter) {
+    return helper.forest.superIndexedAccessGenerator(
+        helper, openSquareBracket, closeSquareBracket, index, getter, setter);
   }
 
   String get plainNameForRead => "[]";
@@ -749,7 +762,7 @@
 
   @override
   Expression buildFieldInitializerError() {
-    return buildError(forest.argumentsEmpty(token), isSetter: true);
+    return buildError(forest.argumentsEmpty(token, token), isSetter: true);
   }
 
   @override
@@ -768,7 +781,7 @@
   @override
   Expression buildAssignment(Expression value, {bool voidContext: false}) {
     return new SyntheticExpressionJudgment(buildError(
-        forest.arguments(<Expression>[value], token),
+        forest.arguments(<Expression>[value], token, token),
         isSetter: true));
   }
 
@@ -779,7 +792,7 @@
       Procedure interfaceTarget,
       bool isPreIncDec: false}) {
     return new SyntheticExpressionJudgment(buildError(
-        forest.arguments(<Expression>[value], token),
+        forest.arguments(<Expression>[value], token, token),
         isGetter: true));
   }
 
@@ -789,6 +802,7 @@
     var error = buildError(
         forest.arguments(
             <Expression>[forest.literalInt(1, null)..fileOffset = offset],
+            token,
             token),
         isGetter: true);
     return new UnresolvedVariableUnaryJudgment(
@@ -802,6 +816,7 @@
     var error = buildError(
         forest.arguments(
             <Expression>[forest.literalInt(1, null)..fileOffset = offset],
+            token,
             token),
         isGetter: true);
     return new UnresolvedVariableUnaryJudgment(
@@ -814,22 +829,22 @@
       Expression value, DartType type, int offset,
       {bool voidContext: false}) {
     return new SyntheticExpressionJudgment(buildError(
-        forest.arguments(<Expression>[value], token),
+        forest.arguments(<Expression>[value], token, token),
         isSetter: true));
   }
 
   @override
   Expression buildSimpleRead() => new SyntheticExpressionJudgment(
-      buildError(forest.argumentsEmpty(token), isGetter: true));
+      buildError(forest.argumentsEmpty(token, token), isGetter: true));
 
   @override
   Expression makeInvalidRead() => new SyntheticExpressionJudgment(
-      buildError(forest.argumentsEmpty(token), isGetter: true));
+      buildError(forest.argumentsEmpty(token, token), isGetter: true));
 
   @override
   Expression makeInvalidWrite(Expression value) {
     return new SyntheticExpressionJudgment(buildError(
-        forest.arguments(<Expression>[value], token),
+        forest.arguments(<Expression>[value], token, token),
         isSetter: true));
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index 0dacced..ec1d489 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -27,6 +27,7 @@
 import 'kernel_ast_api.dart'
     show
         Arguments,
+        ArgumentsJudgment,
         Constructor,
         DartType,
         Expression,
@@ -70,7 +71,7 @@
   scopeLookup(Scope scope, String name, Token token,
       {bool isQualified: false, PrefixBuilder prefix});
 
-  finishSend(Object receiver, Arguments arguments, int offset);
+  finishSend(Object receiver, ArgumentsJudgment arguments, int offset);
 
   Expression buildCompileTimeError(Message message, int charOffset, int length,
       {List<LocatedMessage> context});
@@ -100,7 +101,8 @@
       Constructor constructor, Arguments arguments,
       [int charOffset = -1]);
 
-  Expression buildStaticInvocation(Procedure target, Arguments arguments,
+  Expression buildStaticInvocation(
+      Procedure target, ArgumentsJudgment arguments,
       {Constness constness, int charOffset, Expression error});
 
   Expression buildProblemExpression(
@@ -115,11 +117,14 @@
       bool isStatic,
       LocatedMessage argMessage});
 
-  LocatedMessage checkArgumentsForFunction(FunctionNode function,
-      Arguments arguments, int offset, List<TypeParameter> typeParameters);
+  LocatedMessage checkArgumentsForFunction(
+      FunctionNode function,
+      ArgumentsJudgment arguments,
+      int offset,
+      List<TypeParameter> typeParameters);
 
   LocatedMessage checkArgumentsForType(
-      FunctionType function, Arguments arguments, int offset);
+      FunctionType function, ArgumentsJudgment arguments, int offset);
 
   StaticGet makeStaticGet(Member readTarget, Token token);
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
index caaeeed..ebd3eb6 100644
--- a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
@@ -35,7 +35,7 @@
         VariableDeclaration,
         setParents;
 
-import '../parser.dart' show offsetForToken, optional;
+import '../parser.dart' show endOffsetForToken, offsetForToken, optional;
 
 import '../problems.dart' show unsupported;
 
@@ -132,15 +132,17 @@
   Fangorn(this.typeInferenceTokensSaver);
 
   @override
-  ArgumentsJudgment arguments(List<Expression> positional, Token token,
+  ArgumentsJudgment arguments(
+      List<Expression> positional, Token beginToken, Token endToken,
       {List<DartType> types, List<NamedExpression> named}) {
-    return new ArgumentsJudgment(positional, types: types, named: named)
-      ..fileOffset = offsetForToken(token);
+    return new ArgumentsJudgment(
+        offsetForToken(beginToken), endOffsetForToken(endToken), positional,
+        types: types, named: named);
   }
 
   @override
-  ArgumentsJudgment argumentsEmpty(Token token) {
-    return arguments(<Expression>[], token);
+  ArgumentsJudgment argumentsEmpty(Token beginToken, Token endToken) {
+    return arguments(<Expression>[], beginToken, endToken);
   }
 
   @override
@@ -787,35 +789,38 @@
   @override
   KernelIndexedAccessGenerator indexedAccessGenerator(
       ExpressionGeneratorHelper helper,
-      Token token,
+      Token openSquareBracket,
+      Token closeSquareBracket,
       Expression receiver,
       Expression index,
       Procedure getter,
       Procedure setter) {
-    return new KernelIndexedAccessGenerator.internal(
-        helper, token, receiver, index, getter, setter);
+    return new KernelIndexedAccessGenerator.internal(helper, openSquareBracket,
+        closeSquareBracket, receiver, index, getter, setter);
   }
 
   @override
   KernelThisIndexedAccessGenerator thisIndexedAccessGenerator(
       ExpressionGeneratorHelper helper,
-      Token token,
+      Token openSquareBracket,
+      Token closeSquareBracket,
       Expression index,
       Procedure getter,
       Procedure setter) {
     return new KernelThisIndexedAccessGenerator(
-        helper, token, index, getter, setter);
+        helper, openSquareBracket, closeSquareBracket, index, getter, setter);
   }
 
   @override
   KernelSuperIndexedAccessGenerator superIndexedAccessGenerator(
       ExpressionGeneratorHelper helper,
-      Token token,
+      Token openSquareBracket,
+      Token closeSquareBracket,
       Expression index,
       Member getter,
       Member setter) {
     return new KernelSuperIndexedAccessGenerator(
-        helper, token, index, getter, setter);
+        helper, openSquareBracket, closeSquareBracket, index, getter, setter);
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart
index f795d06..db980e4 100644
--- a/pkg/front_end/lib/src/fasta/kernel/forest.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart
@@ -48,10 +48,13 @@
 abstract class Forest {
   const Forest();
 
-  Arguments arguments(List<Expression> positional, Token location,
+  /// [beginToken] is the opening `(`.
+  /// [endToken] is the closing `)`.
+  Arguments arguments(
+      List<Expression> positional, Token beginToken, Token endToken,
       {covariant List types, covariant List named});
 
-  Arguments argumentsEmpty(Token location);
+  Arguments argumentsEmpty(Token beginToken, Token endToken);
 
   List argumentsNamed(Arguments arguments);
 
@@ -390,17 +393,28 @@
 
   Generator indexedAccessGenerator(
       ExpressionGeneratorHelper helper,
-      Token location,
+      Token openSquareBracket,
+      Token closeSquareBracket,
       Expression receiver,
       Expression index,
       Procedure getter,
       Procedure setter);
 
-  Generator thisIndexedAccessGenerator(ExpressionGeneratorHelper helper,
-      Token location, Expression index, Procedure getter, Procedure setter);
+  Generator thisIndexedAccessGenerator(
+      ExpressionGeneratorHelper helper,
+      Token openSquareBracket,
+      Token closeSquareBracket,
+      Expression index,
+      Procedure getter,
+      Procedure setter);
 
-  Generator superIndexedAccessGenerator(ExpressionGeneratorHelper helper,
-      Token location, Expression index, Member getter, Member setter);
+  Generator superIndexedAccessGenerator(
+      ExpressionGeneratorHelper helper,
+      Token openSquareBracket,
+      Token closeSquareBracket,
+      Expression index,
+      Member getter,
+      Member setter);
 
   Generator staticAccessGenerator(ExpressionGeneratorHelper helper,
       Token location, Member getter, Member setter);
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
index 870acc4..1e07bc1 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
@@ -13,6 +13,7 @@
         AsyncMarker,
         Block,
         BreakStatement,
+        BottomType,
         Catch,
         CheckLibraryIsLoaded,
         Class,
@@ -29,6 +30,7 @@
         FunctionNode,
         FunctionType,
         Initializer,
+        InterfaceType,
         InvalidType,
         LabeledStatement,
         Let,
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart
index 23ffe89..a245bb8 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart
@@ -164,15 +164,15 @@
         charEndOffset);
     members["toString"] = toStringBuilder;
     String className = name;
-    for (int i = 0; i < constantNamesAndOffsetsAndDocs.length; i += 4) {
-      List<MetadataBuilder> metadata = constantNamesAndOffsetsAndDocs[i];
-      String name = constantNamesAndOffsetsAndDocs[i + 1];
-      int charOffset = constantNamesAndOffsetsAndDocs[i + 2];
-      String documentationComment = constantNamesAndOffsetsAndDocs[i + 3];
+    for (int i = 0; i < constantNamesAndOffsetsAndDocs.length; i += 5) {
+      List<MetadataBuilder> metadata = constantNamesAndOffsetsAndDocs[i + 1];
+      String name = constantNamesAndOffsetsAndDocs[i + 2];
+      int charOffset = constantNamesAndOffsetsAndDocs[i + 3];
+      String documentationComment = constantNamesAndOffsetsAndDocs[i + 4];
       if (members.containsKey(name)) {
         parent.addCompileTimeError(templateDuplicatedName.withArguments(name),
             charOffset, noLength, parent.fileUri);
-        constantNamesAndOffsetsAndDocs[i + 1] = null;
+        constantNamesAndOffsetsAndDocs[i + 2] = null;
         continue;
       }
       if (name == className) {
@@ -181,7 +181,7 @@
             charOffset,
             noLength,
             parent.fileUri);
-        constantNamesAndOffsetsAndDocs[i + 1] = null;
+        constantNamesAndOffsetsAndDocs[i + 2] = null;
         continue;
       }
       KernelFieldBuilder fieldBuilder = new KernelFieldBuilder(
@@ -253,8 +253,8 @@
     toStringBuilder.body = new ReturnStatement(
         new DirectPropertyGet(new ThisExpression(), nameField));
     List<Expression> values = <Expression>[];
-    for (int i = 0; i < constantNamesAndOffsetsAndDocs.length; i += 4) {
-      String name = constantNamesAndOffsetsAndDocs[i + 1];
+    for (int i = 0; i < constantNamesAndOffsetsAndDocs.length; i += 5) {
+      String name = constantNamesAndOffsetsAndDocs[i + 2];
       if (name != null) {
         KernelFieldBuilder builder = this[name];
         values.add(new StaticGet(builder.build(libraryBuilder)));
@@ -291,8 +291,8 @@
             ..parent = constructor);
     }
     int index = 0;
-    for (int i = 0; i < constantNamesAndOffsetsAndDocs.length; i += 4) {
-      String constant = constantNamesAndOffsetsAndDocs[i + 1];
+    for (int i = 0; i < constantNamesAndOffsetsAndDocs.length; i += 5) {
+      String constant = constantNamesAndOffsetsAndDocs[i + 2];
       if (constant != null) {
         KernelFieldBuilder field = this[constant];
         field.build(libraryBuilder);
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart
index 2500bb1..060e95f 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator.dart
@@ -75,6 +75,7 @@
 
 import 'kernel_ast_api.dart'
     show
+        ArgumentsJudgment,
         ComplexAssignmentJudgment,
         Constructor,
         DartType,
@@ -240,7 +241,7 @@
     return new SyntheticExpressionJudgment(helper.throwNoSuchMethodError(
         forest.literalNull(token),
         plainNameForRead,
-        forest.argumentsEmpty(noLocation),
+        forest.argumentsEmpty(noLocation, noLocation),
         offsetForToken(token),
         isGetter: true));
   }
@@ -250,7 +251,7 @@
     return buildInvalidWriteJudgment(helper.throwNoSuchMethodError(
         forest.literalNull(token),
         plainNameForRead,
-        forest.arguments(<Expression>[value], noLocation),
+        forest.arguments(<Expression>[value], noLocation, noLocation),
         offsetForToken(token),
         isSetter: true));
   }
@@ -690,6 +691,10 @@
 
 class KernelIndexedAccessGenerator extends KernelGenerator
     with IndexedAccessGenerator {
+  final Token openSquareBracket;
+
+  final Token closeSquareBracket;
+
   final Expression receiver;
 
   final Expression index;
@@ -702,9 +707,15 @@
 
   VariableDeclaration indexVariable;
 
-  KernelIndexedAccessGenerator.internal(ExpressionGeneratorHelper helper,
-      Token token, this.receiver, this.index, this.getter, this.setter)
-      : super(helper, token);
+  KernelIndexedAccessGenerator.internal(
+      ExpressionGeneratorHelper helper,
+      this.openSquareBracket,
+      this.closeSquareBracket,
+      this.receiver,
+      this.index,
+      this.getter,
+      this.setter)
+      : super(helper, openSquareBracket);
 
   Expression indexAccess() {
     indexVariable ??= new VariableDeclaration.forValue(index);
@@ -721,8 +732,11 @@
 
   @override
   Expression _makeSimpleRead() {
-    var read = new MethodInvocationJudgment(receiver, indexGetName,
-        forest.castArguments(forest.arguments(<Expression>[index], token)),
+    var read = new MethodInvocationJudgment(
+        receiver,
+        indexGetName,
+        forest.castArguments(forest.arguments(
+            <Expression>[index], openSquareBracket, closeSquareBracket)),
         interfaceTarget: getter)
       ..fileOffset = offsetForToken(token);
     return read;
@@ -735,8 +749,8 @@
     var write = new MethodInvocationJudgment(
         receiver,
         indexSetName,
-        forest
-            .castArguments(forest.arguments(<Expression>[index, value], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[index, value], openSquareBracket, closeSquareBracket)),
         interfaceTarget: setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -748,8 +762,8 @@
     var read = new MethodInvocationJudgment(
         receiverAccess(),
         indexGetName,
-        forest.castArguments(
-            forest.arguments(<Expression>[indexAccess()], token)),
+        forest.castArguments(forest.arguments(<Expression>[indexAccess()],
+            openSquareBracket, closeSquareBracket)),
         interfaceTarget: getter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.read = read;
@@ -763,8 +777,10 @@
     var write = new MethodInvocationJudgment(
         receiverAccess(),
         indexSetName,
-        forest.castArguments(
-            forest.arguments(<Expression>[indexAccess(), value], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[indexAccess(), value],
+            openSquareBracket,
+            closeSquareBracket)),
         interfaceTarget: setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -783,7 +799,8 @@
         indexSetName,
         forest.castArguments(forest.arguments(
             <Expression>[indexAccess(), new VariableGet(valueVariable)],
-            token)),
+            openSquareBracket,
+            closeSquareBracket)),
         interfaceTarget: setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -835,6 +852,10 @@
 
 class KernelThisIndexedAccessGenerator extends KernelGenerator
     with ThisIndexedAccessGenerator {
+  final Token openSquareBracket;
+
+  final Token closeSquareBracket;
+
   final Expression index;
 
   final Procedure getter;
@@ -843,9 +864,14 @@
 
   VariableDeclaration indexVariable;
 
-  KernelThisIndexedAccessGenerator(ExpressionGeneratorHelper helper,
-      Token token, this.index, this.getter, this.setter)
-      : super(helper, token);
+  KernelThisIndexedAccessGenerator(
+      ExpressionGeneratorHelper helper,
+      this.openSquareBracket,
+      this.closeSquareBracket,
+      this.index,
+      this.getter,
+      this.setter)
+      : super(helper, openSquareBracket);
 
   Expression indexAccess() {
     indexVariable ??= new VariableDeclaration.forValue(index);
@@ -860,7 +886,8 @@
         indexSetName,
         forest.castArguments(forest.arguments(
             <Expression>[indexAccess(), new VariableGet(valueVariable)],
-            token)),
+            openSquareBracket,
+            closeSquareBracket)),
         interfaceTarget: setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -874,7 +901,8 @@
     return new MethodInvocationJudgment(
         forest.thisExpression(token),
         indexGetName,
-        forest.castArguments(forest.arguments(<Expression>[index], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[index], openSquareBracket, closeSquareBracket)),
         interfaceTarget: getter)
       ..fileOffset = offsetForToken(token);
   }
@@ -886,8 +914,8 @@
     var write = new MethodInvocationJudgment(
         forest.thisExpression(token),
         indexSetName,
-        forest
-            .castArguments(forest.arguments(<Expression>[index, value], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[index, value], openSquareBracket, closeSquareBracket)),
         interfaceTarget: setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -899,8 +927,8 @@
     var read = new MethodInvocationJudgment(
         forest.thisExpression(token),
         indexGetName,
-        forest.castArguments(
-            forest.arguments(<Expression>[indexAccess()], token)),
+        forest.castArguments(forest.arguments(<Expression>[indexAccess()],
+            openSquareBracket, closeSquareBracket)),
         interfaceTarget: getter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.read = read;
@@ -914,8 +942,10 @@
     var write = new MethodInvocationJudgment(
         forest.thisExpression(token),
         indexSetName,
-        forest.castArguments(
-            forest.arguments(<Expression>[indexAccess(), value], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[indexAccess(), value],
+            openSquareBracket,
+            closeSquareBracket)),
         interfaceTarget: setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -955,6 +985,10 @@
 
 class KernelSuperIndexedAccessGenerator extends KernelGenerator
     with SuperIndexedAccessGenerator {
+  final Token openSquareBracket;
+
+  final Token closeSquareBracket;
+
   final Expression index;
 
   final Member getter;
@@ -963,9 +997,14 @@
 
   VariableDeclaration indexVariable;
 
-  KernelSuperIndexedAccessGenerator(ExpressionGeneratorHelper helper,
-      Token token, this.index, this.getter, this.setter)
-      : super(helper, token);
+  KernelSuperIndexedAccessGenerator(
+      ExpressionGeneratorHelper helper,
+      this.openSquareBracket,
+      this.closeSquareBracket,
+      this.index,
+      this.getter,
+      this.setter)
+      : super(helper, openSquareBracket);
 
   Expression indexAccess() {
     indexVariable ??= new VariableDeclaration.forValue(index);
@@ -983,7 +1022,8 @@
         indexSetName,
         forest.castArguments(forest.arguments(
             <Expression>[indexAccess(), new VariableGet(valueVariable)],
-            token)),
+            openSquareBracket,
+            closeSquareBracket)),
         setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -999,8 +1039,10 @@
           isSuper: true);
     }
     // TODO(ahe): Use [DirectMethodInvocation] when possible.
-    return new SuperMethodInvocationJudgment(indexGetName,
-        forest.castArguments(forest.arguments(<Expression>[index], token)),
+    return new SuperMethodInvocationJudgment(
+        indexGetName,
+        forest.castArguments(forest.arguments(
+            <Expression>[index], openSquareBracket, closeSquareBracket)),
         interfaceTarget: getter)
       ..fileOffset = offsetForToken(token);
   }
@@ -1015,8 +1057,8 @@
     }
     var write = new SuperMethodInvocation(
         indexSetName,
-        forest
-            .castArguments(forest.arguments(<Expression>[index, value], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[index, value], openSquareBracket, closeSquareBracket)),
         setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -1031,8 +1073,8 @@
     }
     var read = new SuperMethodInvocation(
         indexGetName,
-        forest.castArguments(
-            forest.arguments(<Expression>[indexAccess()], token)),
+        forest.castArguments(forest.arguments(<Expression>[indexAccess()],
+            openSquareBracket, closeSquareBracket)),
         getter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.read = read;
@@ -1049,8 +1091,10 @@
     }
     var write = new SuperMethodInvocation(
         indexSetName,
-        forest.castArguments(
-            forest.arguments(<Expression>[indexAccess(), value], token)),
+        forest.castArguments(forest.arguments(
+            <Expression>[indexAccess(), value],
+            openSquareBracket,
+            closeSquareBracket)),
         setter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.write = write;
@@ -1145,7 +1189,7 @@
   }
 
   @override
-  Expression doInvocation(int offset, Arguments arguments) {
+  Expression doInvocation(int offset, ArgumentsJudgment arguments) {
     Expression error;
     if (helper.constantContext != ConstantContext.none &&
         !helper.isIdentical(readTarget)) {
@@ -1301,7 +1345,7 @@
     return new SyntheticExpressionJudgment(helper.throwNoSuchMethodError(
         forest.literalNull(token),
         plainNameForRead,
-        forest.arguments(<Expression>[value], null)
+        forest.arguments(<Expression>[value], noLocation, noLocation)
           ..fileOffset = value.fileOffset,
         offsetForToken(token),
         isSetter: true));
@@ -1486,7 +1530,8 @@
 
   @override
   Expression buildSimpleRead() {
-    Expression error = buildError(forest.argumentsEmpty(token), isGetter: true);
+    Expression error =
+        buildError(forest.argumentsEmpty(token, token), isGetter: true);
     return new UnresolvedVariableGetJudgment(error, token.isSynthetic)
       ..fileOffset = token.charOffset;
   }
@@ -1510,7 +1555,8 @@
   UnresolvedVariableAssignmentJudgment _buildUnresolvedVariableAssignment(
       bool isCompound, Expression value) {
     return new UnresolvedVariableAssignmentJudgment(
-      buildError(forest.arguments(<Expression>[value], token), isSetter: true),
+      buildError(forest.arguments(<Expression>[value], token, token),
+          isSetter: true),
       isCompound,
       value,
     )..fileOffset = token.charOffset;
@@ -1638,9 +1684,9 @@
   return new MethodInvocationJudgment(
       left,
       operator,
-      helper.forest
-          .castArguments(helper.forest.arguments(<Expression>[right], null))
-            ..fileOffset = offset,
+      helper.forest.castArguments(
+          helper.forest.arguments(<Expression>[right], noLocation, noLocation))
+        ..fileOffset = offset,
       interfaceTarget: interfaceTarget)
     ..fileOffset = offset;
 }
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart
index fe922c0..178e709 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_expression_generator_impl.dart
@@ -17,11 +17,12 @@
 
 class ThisAccessGenerator extends KernelGenerator {
   final bool isInitializer;
+  final bool inFieldInitializer;
 
   final bool isSuper;
 
-  ThisAccessGenerator(
-      ExpressionGeneratorHelper helper, Token token, this.isInitializer,
+  ThisAccessGenerator(ExpressionGeneratorHelper helper, Token token,
+      this.isInitializer, this.inFieldInitializer,
       {this.isSuper: false})
       : super(helper, token);
 
@@ -34,7 +35,11 @@
 
   Expression buildSimpleRead() {
     if (!isSuper) {
-      return forest.thisExpression(token);
+      if (inFieldInitializer) {
+        return buildFieldInitializerError();
+      } else {
+        return forest.thisExpression(token);
+      }
     } else {
       return new SyntheticExpressionJudgment(helper.buildCompileTimeError(
           messageSuperAsExpression,
@@ -47,10 +52,10 @@
   Expression buildFieldInitializerError() {
     String keyword = isSuper ? "super" : "this";
     int offset = offsetForToken(token);
-    return helper.buildCompileTimeError(
+    return helper.buildCompileTimeErrorExpression(
         templateThisOrSuperAccessInFieldInitializer.withArguments(keyword),
         offset,
-        keyword.length);
+        length: keyword.length);
   }
 
   buildPropertyAccess(
@@ -65,6 +70,9 @@
       }
       return buildConstructorInitializer(offset, name, arguments);
     }
+    if (inFieldInitializer && !isInitializer) {
+      return buildFieldInitializerError();
+    }
     Member getter = helper.lookupInstanceMember(name, isSuper: isSuper);
     if (send is SendAccessGenerator) {
       // Notice that 'this' or 'super' can't be null. So we can ignore the
@@ -221,7 +229,7 @@
 
   @override
   Expression buildSimpleRead() {
-    var error = buildError(forest.argumentsEmpty(token), isGetter: true);
+    var error = buildError(forest.argumentsEmpty(token, token), isGetter: true);
     return new InvalidPropertyGetJudgment(error, member)
       ..fileOffset = offsetForToken(token);
   }
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart
index adcad5b..078ccce 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart
@@ -211,7 +211,9 @@
       int startCharOffset,
       int charOffset,
       int charEndOffset,
-      int supertypeOffset) {
+      int supertypeOffset,
+      int codeStartOffset,
+      int codeEndOffset) {
     // Nested declaration began in `OutlineBuilder.beginClassDeclaration`.
     var declaration = endNestedDeclaration(className)
       ..resolveTypes(typeVariables, this);
@@ -245,6 +247,8 @@
         charEndOffset);
     loader.target.metadataCollector
         ?.setDocumentationComment(cls.target, documentationComment);
+    loader.target.metadataCollector
+        ?.setCodeStartEnd(cls.target, codeStartOffset, codeEndOffset);
 
     constructorReferences.clear();
     Map<String, TypeVariableBuilder> typeVariablesByName =
@@ -319,7 +323,9 @@
       String name,
       List<TypeVariableBuilder> typeVariables,
       int modifiers,
-      List<KernelTypeBuilder> interfaces}) {
+      List<KernelTypeBuilder> interfaces,
+      int codeStartOffset,
+      int codeEndOffset}) {
     if (name == null) {
       // The following parameters should only be used when building a named
       // mixin application.
@@ -499,6 +505,8 @@
         if (isNamedMixinApplication) {
           loader.target.metadataCollector?.setDocumentationComment(
               application.target, documentationComment);
+          loader.target.metadataCollector?.setCodeStartEnd(
+              application.target, codeStartOffset, codeEndOffset);
         }
         // TODO(ahe, kmillikin): Should always be true?
         // pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart can't
@@ -522,7 +530,9 @@
       int modifiers,
       KernelTypeBuilder mixinApplication,
       List<KernelTypeBuilder> interfaces,
-      int charOffset) {
+      int charOffset,
+      int codeStartOffset,
+      int codeEndOffset) {
     // Nested declaration began in `OutlineBuilder.beginNamedMixinApplication`.
     endNestedDeclaration(name).resolveTypes(typeVariables, this);
     KernelNamedTypeBuilder supertype = applyMixins(
@@ -532,7 +542,9 @@
         name: name,
         typeVariables: typeVariables,
         modifiers: modifiers,
-        interfaces: interfaces);
+        interfaces: interfaces,
+        codeStartOffset: codeStartOffset,
+        codeEndOffset: codeEndOffset);
     checkTypeVariables(typeVariables, supertype.declaration);
   }
 
@@ -605,6 +617,8 @@
       int charOpenParenOffset,
       int charEndOffset,
       String nativeMethodName,
+      int codeStartOffset,
+      int codeEndOffset,
       {bool isTopLevel}) {
     MetadataCollector metadataCollector = loader.target.metadataCollector;
     ProcedureBuilder procedure = new KernelProcedureBuilder(
@@ -623,6 +637,8 @@
         nativeMethodName);
     metadataCollector?.setDocumentationComment(
         procedure.target, documentationComment);
+    metadataCollector?.setCodeStartEnd(
+        procedure.target, codeStartOffset, codeEndOffset);
     checkTypeVariables(typeVariables, procedure);
     addBuilder(name, procedure, charOffset);
     if (nativeMethodName != null) {
@@ -828,10 +844,10 @@
     }
   }
 
-  void addNativeDependency(Uri nativeImportUri) {
+  void addNativeDependency(String nativeImportPath) {
     Declaration constructor = loader.getNativeAnnotation();
     Arguments arguments =
-        new Arguments(<Expression>[new StringLiteral("$nativeImportUri")]);
+        new Arguments(<Expression>[new StringLiteral(nativeImportPath)]);
     Expression annotation;
     if (constructor.isConstructor) {
       annotation = new ConstructorInvocation(constructor.target, arguments)
@@ -862,8 +878,8 @@
         Import import = imports[importIndex++];
 
         // Rather than add a LibraryDependency, we attach an annotation.
-        if (import.nativeImportUri != null) {
-          addNativeDependency(import.nativeImportUri);
+        if (import.nativeImportPath != null) {
+          addNativeDependency(import.nativeImportPath);
           continue;
         }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
index 9d86807..f454c42 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
@@ -176,16 +176,22 @@
 
 /// Concrete shadow object representing a set of invocation arguments.
 class ArgumentsJudgment extends Arguments {
+  /// The end offset of the closing `)`.
+  final int fileEndOffset;
+
   bool _hasExplicitTypeArguments;
 
   List<ExpressionJudgment> get positionalJudgments => positional.cast();
 
   List<NamedExpressionJudgment> get namedJudgments => named.cast();
 
-  ArgumentsJudgment(List<Expression> positional,
+  ArgumentsJudgment(
+      int fileOffset, this.fileEndOffset, List<Expression> positional,
       {List<DartType> types, List<NamedExpression> named})
       : _hasExplicitTypeArguments = types != null && types.isNotEmpty,
-        super(positional, types: types, named: named);
+        super(positional, types: types, named: named) {
+    this.fileOffset = fileOffset;
+  }
 
   static void setNonInferrableArgumentTypes(
       ArgumentsJudgment arguments, List<DartType> types) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/metadata_collector.dart b/pkg/front_end/lib/src/fasta/kernel/metadata_collector.dart
index 1abf885..e56e209 100644
--- a/pkg/front_end/lib/src/fasta/kernel/metadata_collector.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/metadata_collector.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:kernel/kernel.dart'
-    show LibraryDependency, Member, MetadataRepository, NamedNode;
+    show LibraryDependency, Member, MetadataRepository, NamedNode, TreeNode;
 
 /// The collector to add target specific metadata to.
 abstract class MetadataCollector {
@@ -11,6 +11,8 @@
   /// to a component, metadata is serialized with the component.
   MetadataRepository get repository;
 
+  void setCodeStartEnd(TreeNode node, int start, int end);
+
   void setConstructorNameOffset(Member node, Object name);
 
   void setDocumentationComment(NamedNode node, String comment);
diff --git a/pkg/front_end/lib/src/fasta/parser.dart b/pkg/front_end/lib/src/fasta/parser.dart
index 54082f1..e5349ff 100644
--- a/pkg/front_end/lib/src/fasta/parser.dart
+++ b/pkg/front_end/lib/src/fasta/parser.dart
@@ -33,7 +33,12 @@
 export 'parser/top_level_parser.dart' show TopLevelParser;
 
 export 'parser/util.dart'
-    show lengthForToken, lengthOfSpan, offsetForToken, optional;
+    show
+        endOffsetForToken,
+        lengthForToken,
+        lengthOfSpan,
+        offsetForToken,
+        optional;
 
 class ErrorCollectingListener extends Listener {
   final List<ParserError> recoverableErrors = <ParserError>[];
diff --git a/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart b/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
index cd5628a..a7553fb 100644
--- a/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
@@ -630,8 +630,8 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token endToken) {
-    listener?.endFunctionType(functionToken, endToken);
+  void endFunctionType(Token functionToken) {
+    listener?.endFunctionType(functionToken);
   }
 
   @override
@@ -1296,8 +1296,8 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
-    listener?.handleType(beginToken, endToken);
+  void handleType(Token beginToken) {
+    listener?.handleType(beginToken);
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/parser/listener.dart b/pkg/front_end/lib/src/fasta/parser/listener.dart
index cdb1e5e..936b78e 100644
--- a/pkg/front_end/lib/src/fasta/parser/listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/listener.dart
@@ -865,7 +865,7 @@
     logEvent("TryStatement");
   }
 
-  void handleType(Token beginToken, Token endToken) {
+  void handleType(Token beginToken) {
     logEvent("Type");
   }
 
@@ -881,7 +881,7 @@
   /// - Type variables
   /// - Return type
   /// - Formal parameters
-  void endFunctionType(Token functionToken, Token endToken) {
+  void endFunctionType(Token functionToken) {
     logEvent("FunctionType");
   }
 
diff --git a/pkg/front_end/lib/src/fasta/parser/parser.dart b/pkg/front_end/lib/src/fasta/parser/parser.dart
index 01b159d..3f2075a 100644
--- a/pkg/front_end/lib/src/fasta/parser/parser.dart
+++ b/pkg/front_end/lib/src/fasta/parser/parser.dart
@@ -1060,7 +1060,7 @@
     TypeInfo typeInfo = computeType(typedefKeyword, false);
     token = typeInfo.skipType(typedefKeyword).next;
     Token equals;
-    TypeParamOrArgInfo typeParam = computeTypeParamOrArg(token);
+    TypeParamOrArgInfo typeParam = computeTypeParamOrArg(token, true);
     if (typeInfo == noType &&
         (token.kind == IDENTIFIER_TOKEN || token.type.isPseudo) &&
         optional('=', typeParam.skip(token).next)) {
@@ -1320,9 +1320,11 @@
       next = token.next;
     }
     Token beforeInlineFunctionType;
+    TypeParamOrArgInfo typeParam = noTypeParamOrArg;
     if (optional("<", next)) {
-      Token closer = next.endGroup;
-      if (closer != null) {
+      typeParam = computeTypeParamOrArg(token);
+      if (typeParam != noTypeParamOrArg) {
+        Token closer = typeParam.skip(token);
         if (optional("(", closer.next)) {
           if (varFinalOrConst != null) {
             reportRecoverableError(
@@ -1350,8 +1352,8 @@
 
     Token endInlineFunctionType;
     if (beforeInlineFunctionType != null) {
-      endInlineFunctionType = computeTypeParamOrArg(beforeInlineFunctionType)
-          .parseVariables(beforeInlineFunctionType, this);
+      endInlineFunctionType =
+          typeParam.parseVariables(beforeInlineFunctionType, this);
       listener.beginFunctionTypedFormalParameter(beforeInlineFunctionType.next);
       token = typeInfo.parseType(beforeType, this);
       endInlineFunctionType = parseFormalParametersRequiredOpt(
@@ -2152,17 +2154,15 @@
   }
 
   Token parseMethodTypeVar(Token name) {
+    if (!optional('<', name.next)) {
+      return noTypeParamOrArg.parseVariables(name, this);
+    }
     TypeParamOrArgInfo typeVar = computeTypeParamOrArg(name, true);
-    Token token;
-    if (typeVar == noTypeParamOrArg || name.next.endGroup != null) {
-      token = typeVar.parseVariables(name, this);
-    } else {
+    Token token = typeVar.parseVariables(name, this);
+    if (optional('=', token.next)) {
       // Recovery
-      token = typeVar.parseVariables(name, this);
-      if (optional('=', token.next)) {
-        token = token.next;
-        reportRecoverableErrorWithToken(token, fasta.templateUnexpectedToken);
-      }
+      token = token.next;
+      reportRecoverableErrorWithToken(token, fasta.templateUnexpectedToken);
     }
     return token;
   }
@@ -2431,21 +2431,6 @@
     return rewriteAndRecover(token, message, newToken).next;
   }
 
-  /// If the token after [token] is a '>', return it.
-  /// If the next token is a composite greater-than token such as '>>',
-  /// then replace that token with separate tokens, and return the first '>'.
-  /// Otherwise, report an error, insert a synthetic '>',
-  /// and return that newly inserted synthetic '>'.
-  Token ensureGt(Token token) {
-    Token next = token.next;
-    String value = next.stringValue;
-    if (value == '>') {
-      return next;
-    }
-    rewriteGtCompositeOrRecover(token, next, value);
-    return token.next;
-  }
-
   /// If the token after [token] is a not literal string,
   /// then insert a synthetic literal string.
   /// Call `parseLiteralString` and return the result.
@@ -2500,36 +2485,6 @@
     return token;
   }
 
-  void rewriteGtCompositeOrRecover(Token token, Token next, String value) {
-    assert(value != '>');
-    Token replacement = new Token(TokenType.GT, next.charOffset);
-    if (identical(value, '>>')) {
-      replacement.setNext(new Token(TokenType.GT, next.charOffset + 1));
-    } else if (identical(value, '>=')) {
-      replacement.setNext(new Token(TokenType.EQ, next.charOffset + 1));
-    } else if (identical(value, '>>=')) {
-      replacement.setNext(new Token(TokenType.GT, next.charOffset + 1));
-      replacement.next.setNext(new Token(TokenType.EQ, next.charOffset + 2));
-    } else {
-      // Recovery
-      rewriteAndRecover(token, fasta.templateExpectedToken.withArguments('>'),
-          new SyntheticToken(TokenType.GT, next.offset));
-      return;
-    }
-    rewriter.replaceTokenFollowing(token, replacement);
-  }
-
-  void rewriteLtEndGroupOpt(BeginToken beginToken) {
-    assert(optional('<', beginToken));
-    Token end = beginToken.endGroup;
-    String value = end?.stringValue;
-    if (value != null && value.length > 1) {
-      Token beforeEnd = previousToken(beginToken, end);
-      rewriteGtCompositeOrRecover(beforeEnd, end, value);
-      beginToken.endGroup = null;
-    }
-  }
-
   /// Report the given token as unexpected and return the next token if the next
   /// token is one of the [expectedNext], otherwise just return the given token.
   Token skipUnexpectedTokenOpt(Token token, List<String> expectedNext) {
@@ -2687,9 +2642,10 @@
         // Fall through to continue parsing `factory` as an identifier.
       } else if (identical(value, 'operator')) {
         Token next2 = next.next;
+        TypeParamOrArgInfo typeParam = computeTypeParamOrArg(next);
         // `operator` can be used as an identifier as in
         // `int operator<T>()` or `int operator = 2`
-        if (next2.isUserDefinableOperator && next2.endGroup == null) {
+        if (next2.isUserDefinableOperator && typeParam == noTypeParamOrArg) {
           token = parseMethod(
               beforeStart,
               externalToken,
@@ -2961,7 +2917,7 @@
     assert(optional('operator', token));
     Token next = token.next;
     if (next.isUserDefinableOperator) {
-      if (next.endGroup != null) {
+      if (computeTypeParamOrArg(token) != noTypeParamOrArg) {
         // `operator` is being used as an identifier.
         // For example: `int operator<T>(foo) => 0;`
         listener.handleIdentifier(token, IdentifierContext.methodDeclaration);
@@ -3002,11 +2958,13 @@
   }
 
   Token parseFunctionLiteral(
-      final Token start, TypeInfo typeInfo, IdentifierContext context) {
-    Token beforeName = typeInfo.skipType(start);
-    Token name = beforeName.next;
-    assert(name.isIdentifier);
-    Token formals = computeTypeParamOrArg(name).parseVariables(name, this);
+      Token start,
+      Token beforeName,
+      Token name,
+      TypeInfo typeInfo,
+      TypeParamOrArgInfo typeParam,
+      IdentifierContext context) {
+    Token formals = typeParam.parseVariables(name, this);
     listener.beginNamedFunctionExpression(start.next);
     typeInfo.parseType(start, this);
     return parseNamedFunctionRest(beforeName, start.next, formals, true);
@@ -3067,13 +3025,14 @@
     return token;
   }
 
-  Token parseConstructorReference(Token token) {
+  Token parseConstructorReference(Token token, [TypeParamOrArgInfo typeArg]) {
     Token start =
         ensureIdentifier(token, IdentifierContext.constructorReference);
     listener.beginConstructorReference(start);
     token = parseQualifiedRestOpt(
         start, IdentifierContext.constructorReferenceContinuation);
-    token = computeTypeParamOrArg(token).parseArguments(token, this);
+    typeArg ??= computeTypeParamOrArg(token);
+    token = typeArg.parseArguments(token, this);
     Token period = null;
     if (optional('.', token.next)) {
       period = token.next;
@@ -3748,11 +3707,12 @@
       if (identifier.isIdentifier) {
         // Looking at `identifier ('.' identifier)?`.
         if (optional("<", identifier.next)) {
-          BeginToken typeArguments = identifier.next;
-          Token endTypeArguments = typeArguments.endGroup;
-          if (endTypeArguments != null &&
-              optional(".", endTypeArguments.next)) {
-            return parseImplicitCreationExpression(token);
+          TypeParamOrArgInfo typeArg = computeTypeParamOrArg(identifier);
+          if (typeArg != noTypeParamOrArg) {
+            Token endTypeArguments = typeArg.skip(identifier);
+            if (optional(".", endTypeArguments.next)) {
+              return parseImplicitCreationExpression(token, typeArg);
+            }
           }
         }
       }
@@ -4171,10 +4131,23 @@
       return parseSend(token, context);
     }
     TypeInfo typeInfo = computeType(token, false);
-    if (!looksLikeFunctionDeclaration(typeInfo.skipType(token).next)) {
-      return parseSend(token, context);
+    Token beforeName = typeInfo.skipType(token);
+    Token name = beforeName.next;
+    if (name.isIdentifier) {
+      TypeParamOrArgInfo typeParam = computeTypeParamOrArg(name);
+      Token next = name;
+      if (typeParam != noTypeParamOrArg) {
+        next = typeParam.skip(next);
+      }
+      next = next.next;
+      if (optional('(', next)) {
+        if (looksLikeFunctionBody(next.endGroup.next)) {
+          return parseFunctionLiteral(
+              token, beforeName, name, typeInfo, typeParam, context);
+        }
+      }
     }
-    return parseFunctionLiteral(token, typeInfo, context);
+    return parseSend(token, context);
   }
 
   Token parseRequiredArguments(Token token) {
@@ -4203,10 +4176,11 @@
     return token;
   }
 
-  Token parseImplicitCreationExpression(Token token) {
+  Token parseImplicitCreationExpression(
+      Token token, TypeParamOrArgInfo typeArg) {
     Token begin = token;
     listener.beginImplicitCreationExpression(token);
-    token = parseConstructorReference(token);
+    token = parseConstructorReference(token, typeArg);
     token = parseRequiredArguments(token);
     listener.endImplicitCreationExpression(begin);
     return token;
@@ -4564,14 +4538,14 @@
   /// without a return type.
   bool looksLikeLocalFunction(Token token) {
     if (token.isIdentifier) {
-      token = token.next;
-      if (optional('<', token)) {
-        Token closeBrace = token.endGroup;
-        if (closeBrace == null) {
+      if (optional('<', token.next)) {
+        TypeParamOrArgInfo typeParam = computeTypeParamOrArg(token);
+        if (typeParam == noTypeParamOrArg) {
           return false;
         }
-        token = closeBrace.next;
+        token = typeParam.skip(token);
       }
+      token = token.next;
       if (optional('(', token)) {
         token = token.endGroup.next;
         return optional('{', token) ||
@@ -4594,24 +4568,6 @@
         optional('sync', token);
   }
 
-  /// Returns true if [token] could be the start of a function declaration
-  /// without a return type.
-  bool looksLikeFunctionDeclaration(Token token) {
-    if (!token.isIdentifier) {
-      return false;
-    }
-    token = token.next;
-    if (optional('<', token)) {
-      Token closeBrace = token.endGroup;
-      if (closeBrace == null) return false;
-      token = closeBrace.next;
-    }
-    if (optional('(', token)) {
-      return looksLikeFunctionBody(token.endGroup.next);
-    }
-    return false;
-  }
-
   Token parseExpressionStatementOrConstDeclaration(final Token start) {
     Token constToken = start.next;
     assert(optional('const', constToken));
@@ -4696,22 +4652,24 @@
     Token token = typeInfo.skipType(beforeType);
     Token next = token.next;
 
-    if (!onlyParseVariableDeclarationStart && looksLikeLocalFunction(next)) {
-      // Parse a local function declaration.
-      if (varFinalOrConst != null) {
-        reportRecoverableErrorWithToken(
-            varFinalOrConst, fasta.templateExtraneousModifier);
+    if (!onlyParseVariableDeclarationStart) {
+      if (looksLikeLocalFunction(next)) {
+        // Parse a local function declaration.
+        if (varFinalOrConst != null) {
+          reportRecoverableErrorWithToken(
+              varFinalOrConst, fasta.templateExtraneousModifier);
+        }
+        if (!optional('@', start.next)) {
+          listener.beginMetadataStar(start.next);
+          listener.endMetadataStar(0);
+        }
+        Token beforeFormals =
+            computeTypeParamOrArg(next).parseVariables(next, this);
+        listener.beginLocalFunctionDeclaration(start.next);
+        token = typeInfo.parseType(beforeType, this);
+        next = token.next;
+        return parseNamedFunctionRest(token, start.next, beforeFormals, false);
       }
-      if (!optional('@', start.next)) {
-        listener.beginMetadataStar(start.next);
-        listener.endMetadataStar(0);
-      }
-      Token beforeFormals =
-          computeTypeParamOrArg(next).parseVariables(next, this);
-      listener.beginLocalFunctionDeclaration(start.next);
-      token = typeInfo.parseType(beforeType, this);
-      next = token.next;
-      return parseNamedFunctionRest(token, start.next, beforeFormals, false);
     }
 
     if (token == start) {
diff --git a/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart b/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart
index e3ae092..cc01a67 100644
--- a/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart
+++ b/pkg/front_end/lib/src/fasta/parser/token_stream_rewriter.dart
@@ -14,8 +14,6 @@
         Token,
         TokenType;
 
-import 'util.dart' show optional;
-
 /// Provides the capability of inserting tokens into a token stream. This
 /// implementation does this by rewriting the previous token to point to the
 /// inserted token.
@@ -94,7 +92,7 @@
     return previousToken;
   }
 
-  /// Move [endGroup] (a synthetic `)`, `]`, `}`, or `>` token) and associated
+  /// Move [endGroup] (a synthetic `)`, `]`, or `}` token) and associated
   /// error token after [token] in the token stream and return [endGroup].
   Token moveSynthetic(Token token, Token endGroup) {
     assert(endGroup.beforeSynthetic != null);
@@ -133,50 +131,6 @@
     return replacementToken;
   }
 
-  /// Split a `>>` token into two separate `>` tokens, updates the token stream,
-  /// and returns the first `>`. If [start].endGroup is `>>` then sets
-  /// [start].endGroup to the second `>` but does not set the inner group's
-  /// endGroup, otherwise sets [start].endGroup to the first `>`.
-  Token splitEndGroup(BeginToken start, [Token end]) {
-    end ??= start.endGroup;
-    assert(end != null);
-
-    Token gt;
-    if (optional('>>', end)) {
-      gt = new SimpleToken(TokenType.GT, end.charOffset, end.precedingComments)
-        ..setNext(new SimpleToken(TokenType.GT, end.charOffset + 1)
-          ..setNext(end.next));
-    } else if (optional('>=', end)) {
-      gt = new SimpleToken(TokenType.GT, end.charOffset, end.precedingComments)
-        ..setNext(new SimpleToken(TokenType.EQ, end.charOffset + 1)
-          ..setNext(end.next));
-    } else if (optional('>>=', end)) {
-      gt = new SimpleToken(TokenType.GT, end.charOffset, end.precedingComments)
-        ..setNext(new SimpleToken(TokenType.GT, end.charOffset + 1)
-          ..setNext(new SimpleToken(TokenType.EQ, end.charOffset + 2)
-            ..setNext(end.next)));
-    } else {
-      gt = new SyntheticToken(TokenType.GT, end.charOffset)..setNext(end);
-    }
-
-    Token token = start;
-    Token next = token.next;
-    while (!identical(next, end)) {
-      token = next;
-      next = token.next;
-    }
-    token.setNext(gt);
-
-    if (start.endGroup != null) {
-      assert(optional('>>', start.endGroup));
-      start.endGroup = gt.next;
-    } else {
-      // Recovery
-      start.endGroup = gt;
-    }
-    return gt;
-  }
-
   /// Given the [firstToken] in a chain of tokens to be inserted, return the
   /// last token in the chain.
   ///
diff --git a/pkg/front_end/lib/src/fasta/parser/type_info.dart b/pkg/front_end/lib/src/fasta/parser/type_info.dart
index c94e6f4..317cc51 100644
--- a/pkg/front_end/lib/src/fasta/parser/type_info.dart
+++ b/pkg/front_end/lib/src/fasta/parser/type_info.dart
@@ -59,6 +59,17 @@
 /// [computeTypeParamOrArg] about a particular group of type arguments
 /// or type parameters.
 abstract class TypeParamOrArgInfo {
+  const TypeParamOrArgInfo();
+
+  /// Return `true` if the receiver represents a single type argument
+  bool get isSimpleTypeArgument => false;
+
+  /// Return the simple type associated with this simple type argument
+  /// or throw an exception if this is not a simple type argument.
+  TypeInfo get typeInfo {
+    throw "Internal error: $runtimeType is not a SimpleTypeArgument.";
+  }
+
   /// Call this function to parse optional type arguments after [token].
   /// This function will call the appropriate event methods on the [Parser]'s
   /// listener to handle the arguments. This may modify the token stream
@@ -82,31 +93,13 @@
 /// there is no type information in the source.
 const TypeInfo noType = const NoType();
 
-/// [VoidType] is a specialized [TypeInfo] returned by [computeType] when
-/// there is a single identifier as the type reference.
-const TypeInfo voidType = const VoidType();
-
-/// [SimpleType] is a specialized [TypeInfo] returned by [computeType]
-/// when there is a single identifier as the type reference.
-const TypeInfo simpleType = const SimpleType();
-
-/// [PrefixedType] is a specialized [TypeInfo] returned by [computeType]
-/// when the type reference is of the form: identifier `.` identifier.
-const TypeInfo prefixedType = const PrefixedType();
-
-/// [SimpleTypeWith1Argument] is a specialized [TypeInfo] returned by
-/// [computeType] when the type reference is of the form:
-/// identifier `<` identifier `>`.
-const TypeInfo simpleTypeWith1Argument = const SimpleTypeWith1Argument();
-
 /// [NoTypeParamOrArg] is a specialized [TypeParamOrArgInfo] returned by
 /// [computeTypeParamOrArg] when no type parameters or arguments are found.
 const TypeParamOrArgInfo noTypeParamOrArg = const NoTypeParamOrArg();
 
-/// [SimpleTypeArgument1] is a specialized [TypeParamOrArgInfo] returned by
-/// [computeTypeParamOrArg] when the type reference is of the form:
-/// `<` identifier `>`.
-const TypeParamOrArgInfo simpleTypeArgument1 = const SimpleTypeArgument1();
+/// [VoidType] is a specialized [TypeInfo] returned by [computeType] when
+/// `void` appears in the source.
+const TypeInfo voidType = const VoidType();
 
 bool isGeneralizedFunctionType(Token token) {
   return optional('Function', token) &&
@@ -132,17 +125,13 @@
 ///
 /// If [inDeclaration] is `true`, then this will more aggressively recover
 /// given unbalanced `<` `>` and invalid parameters or arguments.
-///
-/// If this method is called by [computeTypeParamOrArg] and the outer group ends
-/// with `>>`, then then [innerEndGroup] is set to either `>>` if the token
-/// has not been split or the first `>` if the `>>` token has been split.
 TypeInfo computeType(final Token token, bool required,
-    [bool inDeclaration = false, Token innerEndGroup]) {
+    [bool inDeclaration = false]) {
   Token next = token.next;
   if (!isValidTypeReference(next)) {
     if (next.type.isBuiltIn) {
       TypeParamOrArgInfo typeParamOrArg =
-          computeTypeParamOrArg(next, inDeclaration, innerEndGroup);
+          computeTypeParamOrArg(next, inDeclaration);
       if (typeParamOrArg != noTypeParamOrArg) {
         // Recovery: built-in `<` ... `>`
         if (required || looksLikeName(typeParamOrArg.skip(next).next)) {
@@ -163,7 +152,7 @@
     } else if (required && optional('.', next)) {
       // Recovery: looks like prefixed type missing the prefix
       return new ComplexTypeInfo(
-              token, computeTypeParamOrArg(next, inDeclaration, innerEndGroup))
+              token, computeTypeParamOrArg(next, inDeclaration))
           .computePrefixedType(required);
     }
     return noType;
@@ -189,15 +178,15 @@
   // We've seen an identifier.
 
   TypeParamOrArgInfo typeParamOrArg =
-      computeTypeParamOrArg(next, inDeclaration, innerEndGroup);
+      computeTypeParamOrArg(next, inDeclaration);
   if (typeParamOrArg != noTypeParamOrArg) {
-    if (typeParamOrArg == simpleTypeArgument1) {
+    if (typeParamOrArg.isSimpleTypeArgument) {
       // We've seen identifier `<` identifier `>`
       next = typeParamOrArg.skip(next).next;
       if (!isGeneralizedFunctionType(next)) {
         if (required || looksLikeName(next)) {
           // identifier `<` identifier `>` identifier
-          return simpleTypeWith1Argument;
+          return typeParamOrArg.typeInfo;
         } else {
           // identifier `<` identifier `>` non-identifier
           return noType;
@@ -219,8 +208,7 @@
     next = next.next;
     if (isValidTypeReference(next)) {
       // We've seen identifier `.` identifier
-      typeParamOrArg =
-          computeTypeParamOrArg(next, inDeclaration, innerEndGroup);
+      typeParamOrArg = computeTypeParamOrArg(next, inDeclaration);
       next = next.next;
       if (typeParamOrArg == noTypeParamOrArg &&
           !isGeneralizedFunctionType(next)) {
@@ -238,8 +226,7 @@
     }
     // identifier `.` non-identifier
     if (required) {
-      typeParamOrArg =
-          computeTypeParamOrArg(token.next.next, inDeclaration, innerEndGroup);
+      typeParamOrArg = computeTypeParamOrArg(token.next.next, inDeclaration);
       return new ComplexTypeInfo(token, typeParamOrArg)
           .computePrefixedType(required);
     }
@@ -266,37 +253,30 @@
 ///
 /// If [inDeclaration] is `true`, then this will more aggressively recover
 /// given unbalanced `<` `>` and invalid parameters or arguments.
-///
-/// If this method is called by [computeType] and the outer group ends
-/// with `>>`, then then [innerEndGroup] is set to either `>>` if the token
-/// has not been split or the first `>` if the `>>` token has been split.
 TypeParamOrArgInfo computeTypeParamOrArg(Token token,
-    [bool inDeclaration = false, Token innerEndGroup]) {
-  Token next = token.next;
-  if (!optional('<', next)) {
+    [bool inDeclaration = false]) {
+  Token beginGroup = token.next;
+  if (!optional('<', beginGroup)) {
     return noTypeParamOrArg;
   }
-  Token endGroup = next.endGroup ?? innerEndGroup;
-  if (endGroup == null) {
-    if (inDeclaration) {
-      // Recovery
-      // Since the leading `<` cannot be part of an expression,
-      // try to more aggressively recover given an unbalanced '<'.
-      return new ComplexTypeParamOrArgInfo(token, inDeclaration)
-          .compute(innerEndGroup);
-    }
-    return noTypeParamOrArg;
-  }
-  Token identifier = next.next;
+
   // identifier `<` `void` `>` and `<` `dynamic` `>`
   // are handled by ComplexTypeInfo.
-  if ((identifier.kind == IDENTIFIER_TOKEN || identifier.type.isPseudo) &&
-      identifier.next == endGroup) {
-    return simpleTypeArgument1;
+  Token next = beginGroup.next;
+  if ((next.kind == IDENTIFIER_TOKEN || next.type.isPseudo)) {
+    if (optional('>', next.next)) {
+      return simpleTypeArgument1;
+    } else if (optional('>>', next.next)) {
+      return simpleTypeArgument1GtGt;
+    } else if (optional('>=', next.next)) {
+      return simpleTypeArgument1GtEq;
+    }
+  } else if (optional('(', next)) {
+    return noTypeParamOrArg;
   }
+
   // TODO(danrubel): Consider adding additional const for common situations.
-  return new ComplexTypeParamOrArgInfo(token, inDeclaration)
-      .compute(innerEndGroup);
+  return new ComplexTypeParamOrArgInfo(token, inDeclaration).compute();
 }
 
 /// Called by the parser to obtain information about a possible group of type
diff --git a/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart b/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart
index 3ec6155..a6a3a80 100644
--- a/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart
+++ b/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart
@@ -4,8 +4,7 @@
 
 library fasta.parser.type_info_impl;
 
-import '../../scanner/token.dart'
-    show BeginToken, SyntheticToken, Token, TokenType;
+import '../../scanner/token.dart' show SyntheticToken, Token, TokenType;
 
 import '../fasta_codes.dart' as fasta;
 
@@ -23,7 +22,57 @@
 
 import 'type_info.dart';
 
-import 'util.dart' show isOneOf, optional, skipMetadata;
+import 'util.dart'
+    show
+        optional,
+        skipMetadata,
+        splitGtEq,
+        splitGtFromGtGtEq,
+        splitGtGt,
+        syntheticGt;
+
+/// [SimpleType] is a specialized [TypeInfo] returned by [computeType]
+/// when there is a single identifier as the type reference.
+const TypeInfo simpleType = const SimpleType();
+
+/// [PrefixedType] is a specialized [TypeInfo] returned by [computeType]
+/// when the type reference is of the form: identifier `.` identifier.
+const TypeInfo prefixedType = const PrefixedType();
+
+/// [SimpleTypeWith1Argument] is a specialized [TypeInfo] returned by
+/// [computeType] when the type reference is of the form:
+/// identifier `<` identifier `>`.
+const TypeInfo simpleTypeWith1Argument =
+    const SimpleTypeWith1Argument(simpleTypeArgument1);
+
+/// [SimpleTypeWith1Argument] is a specialized [TypeInfo] returned by
+/// [computeType] when the type reference is of the form:
+/// identifier `<` identifier `>=`.
+const TypeInfo simpleTypeWith1ArgumentGtEq =
+    const SimpleTypeWith1Argument(simpleTypeArgument1GtEq);
+
+/// [SimpleTypeWith1Argument] is a specialized [TypeInfo] returned by
+/// [computeType] when the type reference is of the form:
+/// identifier `<` identifier `>>`.
+const TypeInfo simpleTypeWith1ArgumentGtGt =
+    const SimpleTypeWith1Argument(simpleTypeArgument1GtGt);
+
+/// [SimpleTypeArgument1] is a specialized [TypeParamOrArgInfo] returned by
+/// [computeTypeParamOrArg] when the type reference is of the form:
+/// `<` identifier `>`.
+const TypeParamOrArgInfo simpleTypeArgument1 = const SimpleTypeArgument1();
+
+/// [SimpleTypeArgument1] is a specialized [TypeParamOrArgInfo] returned by
+/// [computeTypeParamOrArg] when the type reference is of the form:
+/// `<` identifier `>=`.
+const TypeParamOrArgInfo simpleTypeArgument1GtEq =
+    const SimpleTypeArgument1GtEq();
+
+/// [SimpleTypeArgument1] is a specialized [TypeParamOrArgInfo] returned by
+/// [computeTypeParamOrArg] when the type reference is of the form:
+/// `<` identifier `>>`.
+const TypeParamOrArgInfo simpleTypeArgument1GtGt =
+    const SimpleTypeArgument1GtGt();
 
 /// See documentation on the [noType] const.
 class NoType implements TypeInfo {
@@ -96,7 +145,7 @@
     listener.handleQualified(period);
 
     listener.handleNoTypeArguments(token.next);
-    listener.handleType(start, token.next);
+    listener.handleType(start);
     return token;
   }
 
@@ -108,7 +157,9 @@
 
 /// See documentation on the [simpleTypeWith1Argument] const.
 class SimpleTypeWith1Argument implements TypeInfo {
-  const SimpleTypeWith1Argument();
+  final TypeParamOrArgInfo typeArg;
+
+  const SimpleTypeWith1Argument(this.typeArg);
 
   @override
   bool get couldBeExpression => false;
@@ -131,8 +182,8 @@
     assert(token.isKeywordOrIdentifier);
     Listener listener = parser.listener;
     listener.handleIdentifier(token, IdentifierContext.typeReference);
-    token = simpleTypeArgument1.parseArguments(token, parser);
-    listener.handleType(start, token.next);
+    token = typeArg.parseArguments(token, parser);
+    listener.handleType(start);
     return token;
   }
 
@@ -140,7 +191,7 @@
   Token skipType(Token token) {
     token = token.next;
     assert(token.isKeywordOrIdentifier);
-    return simpleTypeArgument1.skip(token);
+    return typeArg.skip(token);
   }
 }
 
@@ -170,7 +221,7 @@
     Listener listener = parser.listener;
     listener.handleIdentifier(token, IdentifierContext.typeReference);
     token = noTypeParamOrArg.parseArguments(token, parser);
-    listener.handleType(token, token.next);
+    listener.handleType(token);
     return token;
   }
 
@@ -230,7 +281,8 @@
   if (inDeclaration && token.kind == IDENTIFIER_TOKEN) {
     Token next = token.next;
     if (next.kind == IDENTIFIER_TOKEN ||
-        isOneOf(next, const [',', '>', '>>'])) {
+        optional(',', next) ||
+        isCloser(next)) {
       return true;
     }
   }
@@ -285,8 +337,10 @@
           token, IdentifierContext.prefixedTypeReference);
     }
 
+    final typeVariableEndGroups = <Token>[];
     for (Link<Token> t = typeVariableStarters; t.isNotEmpty; t = t.tail) {
-      computeTypeParamOrArg(t.head, true).parseVariables(t.head, parser);
+      typeVariableEndGroups.add(
+          computeTypeParamOrArg(t.head, true).parseVariables(t.head, parser));
       parser.listener.beginFunctionType(start);
     }
 
@@ -315,21 +369,24 @@
           }
         }
         token = typeArguments.parseArguments(token, parser);
-        parser.listener.handleType(typeRefOrPrefix, token.next);
+        parser.listener.handleType(typeRefOrPrefix);
       }
     }
 
+    int endGroupIndex = typeVariableEndGroups.length - 1;
     for (Link<Token> t = typeVariableStarters; t.isNotEmpty; t = t.tail) {
       token = token.next;
       assert(optional('Function', token));
       Token functionToken = token;
       if (optional("<", token.next)) {
         // Skip type parameters, they were parsed above.
-        token = token.next.endGroup;
+        token = typeVariableEndGroups[endGroupIndex];
+        assert(optional('>', token));
       }
+      --endGroupIndex;
       token = parser.parseFormalParametersRequiredOpt(
           token, MemberKind.GeneralizedFunctionType);
-      parser.listener.endFunctionType(functionToken, token.next);
+      parser.listener.endFunctionType(functionToken);
     }
 
     // There are two situations in which the [token] != [end]:
@@ -470,7 +527,7 @@
 }
 
 /// See [noTypeParamOrArg].
-class NoTypeParamOrArg implements TypeParamOrArgInfo {
+class NoTypeParamOrArg extends TypeParamOrArgInfo {
   const NoTypeParamOrArg();
 
   @override
@@ -489,64 +546,125 @@
   Token skip(Token token) => token;
 }
 
-class SimpleTypeArgument1 implements TypeParamOrArgInfo {
+class SimpleTypeArgument1 extends TypeParamOrArgInfo {
   const SimpleTypeArgument1();
 
   @override
+  bool get isSimpleTypeArgument => true;
+
+  @override
+  TypeInfo get typeInfo => simpleTypeWith1Argument;
+
+  @override
   Token parseArguments(Token token, Parser parser) {
-    BeginToken start = token = token.next;
-    assert(optional('<', token));
+    Token beginGroup = token.next;
+    assert(optional('<', beginGroup));
+    Token endGroup = parseEndGroup(beginGroup, beginGroup.next);
     Listener listener = parser.listener;
-    listener.beginTypeArguments(token);
-    token = simpleType.parseType(token, parser);
-    token = processEndGroup(token, start, parser);
-    parser.listener.endTypeArguments(1, start, token);
-    return token;
+    listener.beginTypeArguments(beginGroup);
+    simpleType.parseType(beginGroup, parser);
+    parser.listener.endTypeArguments(1, beginGroup, endGroup);
+    return endGroup;
   }
 
   @override
   Token parseVariables(Token token, Parser parser) {
-    BeginToken start = token = token.next;
-    assert(optional('<', token));
+    Token beginGroup = token.next;
+    assert(optional('<', beginGroup));
+    token = beginGroup.next;
+    Token endGroup = parseEndGroup(beginGroup, token);
     Listener listener = parser.listener;
-    listener.beginTypeVariables(token);
-    token = token.next;
+    listener.beginTypeVariables(beginGroup);
     listener.beginMetadataStar(token);
     listener.endMetadataStar(0);
     listener.handleIdentifier(token, IdentifierContext.typeVariableDeclaration);
     listener.beginTypeVariable(token);
     listener.handleTypeVariablesDefined(token, 1);
     listener.handleNoType(token);
-    token = processEndGroup(token, start, parser);
-    listener.endTypeVariable(token, 0, null);
-    listener.endTypeVariables(start, token);
-    return token;
+    listener.endTypeVariable(endGroup, 0, null);
+    listener.endTypeVariables(beginGroup, endGroup);
+    return endGroup;
   }
 
   @override
   Token skip(Token token) {
     token = token.next;
     assert(optional('<', token));
-    assert(token.endGroup != null ||
-        (optional('>', token.next.next) || optional('>>', token.next.next)));
-    return (optional('>', token.endGroup ?? token.next.next)
-        ? token.next.next
-        : token.next);
+    token = token.next;
+    assert(token.isKeywordOrIdentifier);
+    return skipEndGroup(token);
+  }
+
+  Token skipEndGroup(Token token) {
+    token = token.next;
+    assert(optional('>', token));
+    return token;
+  }
+
+  Token parseEndGroup(Token beginGroup, Token token) {
+    token = token.next;
+    assert(optional('>', token));
+    return token;
   }
 }
 
-class ComplexTypeParamOrArgInfo implements TypeParamOrArgInfo {
+class SimpleTypeArgument1GtEq extends SimpleTypeArgument1 {
+  const SimpleTypeArgument1GtEq();
+
+  @override
+  TypeInfo get typeInfo => simpleTypeWith1ArgumentGtEq;
+
+  Token skipEndGroup(Token token) {
+    token = token.next;
+    assert(optional('>=', token));
+    return splitGtEq(token);
+  }
+
+  Token parseEndGroup(Token beginGroup, Token beforeEndGroup) {
+    Token endGroup = beforeEndGroup.next;
+    if (!optional('>', endGroup)) {
+      endGroup = splitGtEq(endGroup);
+      endGroup.next.setNext(endGroup.next.next);
+    }
+    beforeEndGroup.setNext(endGroup);
+    return endGroup;
+  }
+}
+
+class SimpleTypeArgument1GtGt extends SimpleTypeArgument1 {
+  const SimpleTypeArgument1GtGt();
+
+  @override
+  TypeInfo get typeInfo => simpleTypeWith1ArgumentGtGt;
+
+  Token skipEndGroup(Token token) {
+    token = token.next;
+    assert(optional('>>', token));
+    return splitGtGt(token);
+  }
+
+  Token parseEndGroup(Token beginGroup, Token beforeEndGroup) {
+    Token endGroup = beforeEndGroup.next;
+    if (!optional('>', endGroup)) {
+      endGroup = splitGtGt(endGroup);
+      endGroup.next.setNext(endGroup.next.next);
+    }
+    beforeEndGroup.setNext(endGroup);
+    return endGroup;
+  }
+}
+
+class ComplexTypeParamOrArgInfo extends TypeParamOrArgInfo {
   /// The first token in the type var.
-  final BeginToken start;
+  final Token start;
 
   /// If [inDeclaration] is `true`, then this will more aggressively recover
   /// given unbalanced `<` `>` and invalid parameters or arguments.
   final bool inDeclaration;
 
-  /// The last token in the group (typically `>`).
-  /// If a `>>` has not yet been split, then this field will be
-  /// `>>` for the outer group and the token before `>>` for the inner group.
-  Token end;
+  /// The token before the end group token (e.g. `>`, `>>`, `>=`, or `>>=`)
+  /// or after which a synthetic end group token should be inserted.
+  Token beforeEnd;
 
   ComplexTypeParamOrArgInfo(Token token, this.inDeclaration)
       : assert(optional('<', token.next)),
@@ -556,29 +674,25 @@
   /// Parse the tokens and return the receiver or [noTypeParamOrArg] if there
   /// are no type parameters or arguments. This does not modify the token
   /// stream.
-  ///
-  /// If this group is enclosed and the outer group ends with `>>`, then
-  /// [endGroup] is set to either `>>` if the token has not been split
-  /// or the first `>` if the `>>` token has been split.
-  TypeParamOrArgInfo compute(Token endGroup) {
-    Token innerEndGroup;
-    if (start.endGroup != null && optional('>>', start.endGroup)) {
-      innerEndGroup = start.endGroup;
-    }
-
+  TypeParamOrArgInfo compute() {
     Token token;
     Token next = start;
     while (true) {
-      TypeInfo typeInfo = computeType(next, true, inDeclaration, innerEndGroup);
+      TypeInfo typeInfo = computeType(next, true, inDeclaration);
       if (typeInfo == noType) {
         while (typeInfo == noType && optional('@', next.next)) {
           next = skipMetadata(next);
-          typeInfo = computeType(next, true, inDeclaration, innerEndGroup);
+          typeInfo = computeType(next, true, inDeclaration);
         }
-        if (typeInfo == noType && !optional(',', next.next)) {
-          token = next;
-          next = token.next;
-          break;
+        if (typeInfo == noType) {
+          if (next == start && !inDeclaration && !isCloser(next.next)) {
+            return noTypeParamOrArg;
+          }
+          if (!optional(',', next.next)) {
+            token = next;
+            next = token.next;
+            break;
+          }
         }
         assert(typeInfo != noType || optional(',', next.next));
         // Fall through to process type (if any) and consume `,`
@@ -586,33 +700,41 @@
       token = typeInfo.skipType(next);
       next = token.next;
       if (optional('extends', next) || optional('super', next)) {
-        token = computeType(next, true, inDeclaration, innerEndGroup)
-            .skipType(next);
+        token = computeType(next, true, inDeclaration).skipType(next);
         next = token.next;
       }
       if (!optional(',', next)) {
+        if (isCloser(next)) {
+          beforeEnd = token;
+          return this;
+        }
+        if (!inDeclaration) {
+          return noTypeParamOrArg;
+        }
+
+        // Recovery
         if (!looksLikeTypeParamOrArg(inDeclaration, next)) {
           break;
         }
-        // Recovery: Missing comma. Continue looping
+        // Looks like missing comma. Continue looping.
+        next = token;
       }
     }
 
-    if (next == start.endGroup) {
-      end = next;
-    } else if (next == endGroup) {
-      assert(start.endGroup == null);
-      assert(optional('>', endGroup) || optional('>>', endGroup));
-      // If `>>`, then the end or last consumed token is the token before `>>`.
-      end = optional('>>', next) ? token : next;
-    } else if (inDeclaration) {
-      end = start.endGroup;
-      if (end == null) {
-        // Recovery: Unbalanced `<`
-        end = token;
+    // Recovery
+    beforeEnd = token;
+    if (!isCloser(next)) {
+      if (optional('(', next)) {
+        token = next.endGroup;
+        next = token.next;
       }
-    } else {
-      return noTypeParamOrArg;
+      if (!isCloser(next)) {
+        token = next;
+        next = token.next;
+      }
+      if (isCloser(next)) {
+        beforeEnd = token;
+      }
     }
     return this;
   }
@@ -621,18 +743,17 @@
   Token parseArguments(Token token, Parser parser) {
     assert(identical(token.next, start));
     Token next = start;
-    Token innerEndGroup = processBeginGroup(start, parser);
     parser.listener.beginTypeArguments(start);
     int count = 0;
     while (true) {
-      TypeInfo typeInfo = computeType(next, true, inDeclaration, innerEndGroup);
+      TypeInfo typeInfo = computeType(next, true, inDeclaration);
       if (typeInfo == noType) {
         // Recovery
         while (typeInfo == noType && optional('@', next.next)) {
           parser.reportRecoverableErrorWithToken(
               next.next, fasta.templateUnexpectedToken);
           next = skipMetadata(next);
-          typeInfo = computeType(next, true, inDeclaration, innerEndGroup);
+          typeInfo = computeType(next, true, inDeclaration);
         }
         // Fall through to process type (if any) and consume `,`
       }
@@ -640,22 +761,23 @@
       next = token.next;
       ++count;
       if (!optional(',', next)) {
-        if (!looksLikeTypeParamOrArg(inDeclaration, next)) {
+        if (parseCloser(token)) {
+          beforeEnd = token;
           break;
         }
 
-        // Recovery: missing comma
-        parser.reportRecoverableError(
-            next, fasta.templateExpectedButGot.withArguments(','));
-        next = parser.rewriter
-            .insertTokenAfter(
-                token, new SyntheticToken(TokenType.COMMA, next.charOffset))
-            .next;
+        // Recovery
+        if (!looksLikeTypeParamOrArg(inDeclaration, next)) {
+          parseUnexpectedEnd(token, parser);
+          break;
+        }
+        // Missing comma. Report error, insert comma, and continue looping.
+        next = parseMissingComma(token, parser);
       }
     }
-    end = processEndGroup(token, start, parser);
-    parser.listener.endTypeArguments(count, start, end);
-    return end;
+    Token endGroup = beforeEnd.next;
+    parser.listener.endTypeArguments(count, start, endGroup);
+    return endGroup;
   }
 
   @override
@@ -664,7 +786,6 @@
     Token next = start;
     Listener listener = parser.listener;
     listener.beginTypeVariables(start);
-    Token innerEndGroup = processBeginGroup(start, parser);
     int count = 0;
 
     Link<Token> typeStarts = const Link<Token>();
@@ -672,15 +793,18 @@
 
     while (true) {
       token = parser.parseMetadataStar(next);
-      token = parser.ensureIdentifier(
+      next = parser.ensureIdentifier(
           token, IdentifierContext.typeVariableDeclaration);
+      if (beforeEnd == token) {
+        beforeEnd = next;
+      }
+      token = next;
       listener.beginTypeVariable(token);
       typeStarts = typeStarts.prepend(token);
 
       next = token.next;
       if (optional('extends', next) || optional('super', next)) {
-        TypeInfo typeInfo =
-            computeType(next, true, inDeclaration, innerEndGroup);
+        TypeInfo typeInfo = computeType(next, true, inDeclaration);
         token = typeInfo.skipType(next);
         next = token.next;
         superTypeInfos = superTypeInfos.prepend(typeInfo);
@@ -690,17 +814,16 @@
 
       ++count;
       if (!optional(',', next)) {
-        if (!looksLikeTypeParamOrArg(inDeclaration, next)) {
+        if (isCloser(token)) {
           break;
         }
 
-        // Recovery: missing comma
-        parser.reportRecoverableError(
-            next, fasta.templateExpectedButGot.withArguments(','));
-        next = parser.rewriter
-            .insertTokenAfter(
-                token, new SyntheticToken(TokenType.COMMA, next.charOffset))
-            .next;
+        // Recovery
+        if (!looksLikeTypeParamOrArg(inDeclaration, next)) {
+          break;
+        }
+        // Missing comma. Report error, insert comma, and continue looping.
+        next = parseMissingComma(token, parser);
       }
     }
 
@@ -734,53 +857,92 @@
       superTypeInfos = superTypeInfos.tail;
     }
 
-    end = processEndGroup(token, start, parser);
-    listener.endTypeVariables(start, end);
-    return end;
+    if (parseCloser(token)) {
+      beforeEnd = token;
+    } else {
+      parseUnexpectedEnd(token, parser);
+    }
+    Token endGroup = beforeEnd.next;
+    listener.endTypeVariables(start, endGroup);
+    return endGroup;
+  }
+
+  Token parseMissingComma(Token token, Parser parser) {
+    Token next = token.next;
+    parser.reportRecoverableError(
+        next, fasta.templateExpectedButGot.withArguments(','));
+    return parser.rewriter.insertToken(
+        token, new SyntheticToken(TokenType.COMMA, next.charOffset));
+  }
+
+  void parseUnexpectedEnd(Token token, Parser parser) {
+    if (beforeEnd.isSynthetic && beforeEnd.charOffset == token.charOffset) {
+      // Ensure that beforeEnd is in the token stream
+      // as a nested type argument or parameter may have inserted
+      // a synthetic closer.
+      beforeEnd = token;
+    }
+    if (parseCloser(beforeEnd)) {
+      parser.reportRecoverableErrorWithToken(
+          token.next, fasta.templateUnexpectedToken);
+    } else {
+      // If token is synthetic, then an error has already been reported.
+      if (!token.isSynthetic) {
+        parser.reportRecoverableError(
+            token, fasta.templateExpectedAfterButGot.withArguments('>'));
+      }
+      Token next = beforeEnd.next;
+      Token endGroup = syntheticGt(next);
+      endGroup.setNext(next);
+      beforeEnd.setNext(endGroup);
+    }
   }
 
   @override
-  Token skip(Token token) => end;
+  Token skip(Token token) {
+    final next = beforeEnd.next;
+    final value = next.stringValue;
+    if (identical(value, '>')) {
+      return next;
+    } else if (identical(value, '>>')) {
+      return splitGtGt(next);
+    } else if (identical(value, '>=')) {
+      return splitGtEq(next);
+    } else if (identical(value, '>>=')) {
+      return splitGtFromGtGtEq(next);
+    }
+    return syntheticGt(next);
+  }
 }
 
-Token processBeginGroup(BeginToken start, Parser parser) {
-  if (start.endGroup != null && optional('>>', start.endGroup)) {
-    return parser.rewriter.splitEndGroup(start);
-  }
-  return null;
+/// Return `true` if [token] is one of `>`, `>>`, `>=', or `>>=`.
+bool isCloser(Token token) {
+  final value = token.stringValue;
+  return identical(value, '>') ||
+      identical(value, '>>') ||
+      identical(value, '>=') ||
+      identical(value, '>>=');
 }
 
-Token processEndGroup(Token token, BeginToken start, Parser parser) {
-  Token next = token.next;
-  if (next == start.endGroup) {
-    return next;
-  } else if (optional('>', next) && !next.isSynthetic) {
-    // When `>>` is split, the inner group's endGroup updated here.
-    assert(start.endGroup == null);
-    start.endGroup = next;
-    return next;
+/// If [token] is one of `>`, `>>`, `>=', or `>>=`,
+/// then update the token stream and return `true`.
+bool parseCloser(Token beforeCloser) {
+  Token closer = beforeCloser.next;
+  String value = closer.stringValue;
+  if (identical(value, '>')) {
+    return true;
   }
-
-  // Recovery
-  if (start.endGroup != null) {
-    // Extraneous tokens between `<` and `>`.
-    parser.reportRecoverableErrorWithToken(next, fasta.templateUnexpectedToken);
-    return start.endGroup;
-  } else if (isOneOf(next, const ['>>', '>=', '>>='])) {
-    // Found single unbalanced `<`.
-    return parser.rewriter.splitEndGroup(start, next);
+  Token split;
+  if (identical(value, '>>')) {
+    split = splitGtGt(closer);
+  } else if (identical(value, '>=')) {
+    split = splitGtEq(closer);
+  } else if (identical(value, '>>=')) {
+    split = splitGtFromGtGtEq(closer);
+  } else {
+    return false;
   }
-  // Ensure that `>` is inserted after any newly inserted synthetic tokens.
-  while (next.isSynthetic && !next.isEof) {
-    token = next;
-    next = token.next;
-  }
-  // Unbalanced `<` `>`
-  parser.reportRecoverableError(
-      next, fasta.templateExpectedButGot.withArguments('>'));
-  start.endGroup = parser.rewriter
-      .insertTokenAfter(
-          token, new SyntheticToken(TokenType.GT, next.charOffset))
-      .next;
-  return start.endGroup;
+  split.next.setNext(closer.next);
+  beforeCloser.setNext(split);
+  return true;
 }
diff --git a/pkg/front_end/lib/src/fasta/parser/util.dart b/pkg/front_end/lib/src/fasta/parser/util.dart
index 4329810..f617749 100644
--- a/pkg/front_end/lib/src/fasta/parser/util.dart
+++ b/pkg/front_end/lib/src/fasta/parser/util.dart
@@ -10,7 +10,8 @@
 
 import '../scanner.dart' show Token;
 
-import '../../scanner/token.dart' show BeginToken;
+import '../../scanner/token.dart'
+    show BeginToken, SimpleToken, SyntheticToken, TokenType;
 
 /// Returns true if [token] is the symbol or keyword [value].
 bool optional(String value, Token token) {
@@ -62,6 +63,12 @@
   return token == null ? TreeNode.noOffset : token.offset;
 }
 
+/// A null-aware alternative to `token.end`.  If [token] is `null`, returns
+/// `TreeNode.noOffset`.
+int endOffsetForToken(Token token) {
+  return token == null ? TreeNode.noOffset : token.end;
+}
+
 bool isDigit(int c) => c >= 0x30 && c <= 0x39;
 
 bool isLetter(int c) => c >= 0x41 && c <= 0x5A || c >= 0x61 && c <= 0x7A;
@@ -127,3 +134,61 @@
   }
   return token;
 }
+
+/// Split `>=` into two separate tokens.
+/// Call [Token.setNext] to add the token to the stream.
+Token splitGtEq(Token token) {
+  assert(optional('>=', token));
+  return new SimpleToken(
+      TokenType.GT, token.charOffset, token.precedingComments)
+    ..setNext(new SimpleToken(TokenType.EQ, token.charOffset + 1)
+      // Set next rather than calling Token.setNext
+      // so that the previous token is not set.
+      ..next = token.next);
+}
+
+/// Split `>>` into two separate tokens.
+/// Call [Token.setNext] to add the token to the stream.
+SimpleToken splitGtGt(Token token) {
+  assert(optional('>>', token));
+  return new SimpleToken(
+      TokenType.GT, token.charOffset, token.precedingComments)
+    ..setNext(new SimpleToken(TokenType.GT, token.charOffset + 1)
+      // Set next rather than calling Token.setNext
+      // so that the previous token is not set.
+      ..next = token.next);
+}
+
+/// Split `>>=` into three separate tokens.
+/// Call [Token.setNext] to add the token to the stream.
+Token splitGtGtEq(Token token) {
+  assert(optional('>>=', token));
+  return new SimpleToken(
+      TokenType.GT, token.charOffset, token.precedingComments)
+    ..setNext(new SimpleToken(TokenType.GT, token.charOffset + 1)
+      ..setNext(new SimpleToken(TokenType.EQ, token.charOffset + 2)
+        // Set next rather than calling Token.setNext
+        // so that the previous token is not set.
+        ..next = token.next));
+}
+
+/// Split `>>=` into two separate tokens... `>` followed by `>=`.
+/// Call [Token.setNext] to add the token to the stream.
+Token splitGtFromGtGtEq(Token token) {
+  assert(optional('>>=', token));
+  return new SimpleToken(
+      TokenType.GT, token.charOffset, token.precedingComments)
+    ..setNext(new SimpleToken(TokenType.GT_EQ, token.charOffset + 1)
+      // Set next rather than calling Token.setNext
+      // so that the previous token is not set.
+      ..next = token.next);
+}
+
+/// Return a synthetic `<` followed by [next].
+/// Call [Token.setNext] to add the token to the stream.
+Token syntheticGt(Token next) {
+  return new SyntheticToken(TokenType.GT, next.charOffset)
+    // Set next rather than calling Token.setNext
+    // so that the previous token is not set.
+    ..next = next;
+}
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
index 882e0b4..54ac074 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -151,7 +151,7 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
+  void handleType(Token beginToken) {
     debugEvent("Type");
     discard(1);
   }
@@ -211,7 +211,7 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token endToken) {
+  void endFunctionType(Token functionToken) {
     debugEvent("FunctionType");
     discard(1);
   }
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 597ecd0..cca9dae 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -4,6 +4,8 @@
 
 library fasta.outline_builder;
 
+import 'dart:math' show min;
+
 import 'package:kernel/ast.dart' show ProcedureKind;
 
 import '../../scanner/token.dart' show Token;
@@ -146,19 +148,30 @@
   }
 
   @override
+  void beginMetadataStar(Token token) {
+    push(token);
+  }
+
+  @override
   void endMetadataStar(int count) {
     debugEvent("MetadataStar");
-    push(popList(
-            count,
-            new List<ExpressionMetadataBuilder<TypeBuilder>>.filled(count, null,
-                growable: true)) ??
-        NullValue.Metadata);
+    if (count == 0) {
+      pop();
+      push(NullValue.MetadataToken);
+      push(NullValue.Metadata);
+    } else {
+      push(popList(
+          count,
+          new List<ExpressionMetadataBuilder<TypeBuilder>>.filled(count, null,
+              growable: true)));
+    }
   }
 
   @override
   void handleInvalidTopLevelDeclaration(Token endToken) {
     debugEvent("InvalidTopLevelDeclaration");
     pop(); // metadata star
+    pop(); // metadataToken
   }
 
   @override
@@ -191,6 +204,7 @@
     int uriOffset = popCharOffset();
     String uri = pop();
     List<MetadataBuilder> metadata = pop();
+    pop(); // metadataToken
     library.addExport(metadata, uri, configurations, combinators,
         exportKeyword.charOffset, uriOffset);
     checkEmpty(exportKeyword.charOffset);
@@ -219,6 +233,7 @@
     int uriOffset = popCharOffset();
     String uri = pop(); // For a conditional import, this is the default URI.
     List<MetadataBuilder> metadata = pop();
+    pop(); // metadataToken
     library.addImport(
         metadata,
         uri,
@@ -274,6 +289,7 @@
     int charOffset = popCharOffset();
     String uri = pop();
     List<MetadataBuilder> metadata = pop();
+    pop(); // metadataToken
     library.addPart(metadata, uri, charOffset);
     checkEmpty(partKeyword.charOffset);
   }
@@ -297,8 +313,8 @@
     if (context == IdentifierContext.enumValueDeclaration) {
       super.handleIdentifier(token, context);
       push(token.charOffset);
-      String documentationComment = getDocumentationComment(token);
-      push(documentationComment ?? NullValue.DocumentationComment);
+      var docComment = documentationCommentBefore(token);
+      push(docComment?.text ?? NullValue.DocumentationComment);
     } else {
       super.handleIdentifier(token, context);
       push(token.charOffset);
@@ -385,10 +401,11 @@
   void endLibraryName(Token libraryKeyword, Token semicolon) {
     debugEvent("endLibraryName");
     popCharOffset();
-    String documentationComment = getDocumentationComment(libraryKeyword);
     Object name = pop();
     List<MetadataBuilder> metadata = pop();
-    library.documentationComment = documentationComment;
+    Token metadataToken = pop();
+    var docComment = documentationComment(libraryKeyword, metadataToken);
+    library.documentationComment = docComment?.text;
     library.name = "${name}";
     library.metadata = metadata;
   }
@@ -451,7 +468,6 @@
   @override
   void endClassDeclaration(Token beginToken, Token endToken) {
     debugEvent("endClassDeclaration");
-    String documentationComment = getDocumentationComment(beginToken);
     List<TypeBuilder> interfaces = pop(NullValue.TypeBuilderList);
     int supertypeOffset = pop();
     TypeBuilder supertype = pop();
@@ -463,12 +479,18 @@
       supertype.typeVariables = typeVariables;
     }
     List<MetadataBuilder> metadata = pop();
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
 
     final int startCharOffset =
         metadata == null ? beginToken.charOffset : metadata.first.charOffset;
 
+    int codeStartOffset =
+        _chooseCodeStartOffset(docComment, metadataToken, beginToken);
+    int codeEndOffset = endToken.end;
+
     library.addClass(
-        documentationComment,
+        docComment?.text,
         metadata,
         modifiers,
         name,
@@ -478,7 +500,9 @@
         startCharOffset,
         charOffset,
         endToken.charOffset,
-        supertypeOffset);
+        supertypeOffset,
+        codeStartOffset,
+        codeEndOffset);
     checkEmpty(beginToken.charOffset);
   }
 
@@ -519,15 +543,21 @@
       modifiers |= abstractMask;
     }
     List<MetadataBuilder> metadata = pop();
-    String documentationComment = getDocumentationComment(beginToken);
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
     checkEmpty(beginToken.charOffset);
     library
         .endNestedDeclaration("#method")
         .resolveTypes(typeVariables, library);
     final int startCharOffset =
         metadata == null ? beginToken.charOffset : metadata.first.charOffset;
+
+    int codeStartOffset =
+        _chooseCodeStartOffset(docComment, metadataToken, beginToken);
+    int codeEndOffset = endToken.end;
+
     library.addProcedure(
-        documentationComment,
+        docComment?.text,
         metadata,
         modifiers,
         returnType,
@@ -540,6 +570,8 @@
         formalsOffset,
         endToken.charOffset,
         nativeMethodName,
+        codeStartOffset,
+        codeEndOffset,
         isTopLevel: true);
     nativeMethodName = null;
   }
@@ -697,7 +729,8 @@
     bool isConst = (modifiers & constMask) != 0;
     int varFinalOrConstOffset = pop();
     List<MetadataBuilder> metadata = pop();
-    String documentationComment = getDocumentationComment(beginToken);
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
     library
         .endNestedDeclaration("#method")
         .resolveTypes(typeVariables, library);
@@ -720,7 +753,7 @@
       final int startCharOffset =
           metadata == null ? beginToken.charOffset : metadata.first.charOffset;
       library.addConstructor(
-          documentationComment,
+          docComment?.text,
           metadata,
           modifiers,
           returnType,
@@ -740,8 +773,13 @@
       }
       final int startCharOffset =
           metadata == null ? beginToken.charOffset : metadata.first.charOffset;
+
+      int codeStartOffset =
+          _chooseCodeStartOffset(docComment, metadataToken, beginToken);
+      int codeEndOffset = endToken.end;
+
       library.addProcedure(
-          documentationComment,
+          docComment?.text,
           metadata,
           modifiers,
           returnType,
@@ -754,6 +792,8 @@
           formalsOffset,
           endToken.charOffset,
           nativeMethodName,
+          codeStartOffset,
+          codeEndOffset,
           isTopLevel: false);
     }
     nativeMethodName = null;
@@ -773,7 +813,6 @@
   void endNamedMixinApplication(Token beginToken, Token classKeyword,
       Token equals, Token implementsKeyword, Token endToken) {
     debugEvent("endNamedMixinApplication");
-    String documentationComment = getDocumentationComment(beginToken);
     List<TypeBuilder> interfaces = popIfNotNull(implementsKeyword);
     TypeBuilder mixinApplication = pop();
     int modifiers = pop();
@@ -781,8 +820,24 @@
     int charOffset = pop();
     String name = pop();
     List<MetadataBuilder> metadata = pop();
-    library.addNamedMixinApplication(documentationComment, metadata, name,
-        typeVariables, modifiers, mixinApplication, interfaces, charOffset);
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
+
+    int codeStartOffset =
+        _chooseCodeStartOffset(docComment, metadataToken, beginToken);
+    int codeEndOffset = endToken.end;
+
+    library.addNamedMixinApplication(
+        docComment?.text,
+        metadata,
+        name,
+        typeVariables,
+        modifiers,
+        mixinApplication,
+        interfaces,
+        charOffset,
+        codeStartOffset,
+        codeEndOffset);
     checkEmpty(beginToken.charOffset);
   }
 
@@ -800,7 +855,7 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
+  void handleType(Token beginToken) {
     debugEvent("Type");
     List<TypeBuilder> arguments = pop();
     int charOffset = pop();
@@ -846,6 +901,7 @@
     TypeBuilder type = pop();
     int modifiers = pop();
     List<MetadataBuilder> metadata = pop();
+    pop(); // metadataToken
     push(library.addFormalParameter(
         metadata, modifiers, type, name, thisKeyword != null, charOffset));
   }
@@ -976,14 +1032,15 @@
 
   @override
   void endEnum(Token enumKeyword, Token leftBrace, int count) {
-    String documentationComment = getDocumentationComment(enumKeyword);
     List<Object> constantNamesAndOffsets = popList(
-        count * 4, new List<Object>.filled(count * 4, null, growable: true));
+        count * 5, new List<Object>.filled(count * 5, null, growable: true));
     int charOffset = pop();
     String name = pop();
     List<MetadataBuilder> metadata = pop();
-    library.addEnum(documentationComment, metadata, name,
-        constantNamesAndOffsets, charOffset, leftBrace?.endGroup?.charOffset);
+    Token metadataToken = pop();
+    var docComment = documentationComment(enumKeyword, metadataToken);
+    library.addEnum(docComment?.text, metadata, name, constantNamesAndOffsets,
+        charOffset, leftBrace?.endGroup?.charOffset);
     checkEmpty(enumKeyword.charOffset);
   }
 
@@ -1005,7 +1062,7 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token endToken) {
+  void endFunctionType(Token functionToken) {
     debugEvent("FunctionType");
     List<FormalParameterBuilder> formals = pop();
     pop(); // formals offset
@@ -1030,7 +1087,6 @@
   void endFunctionTypeAlias(
       Token typedefKeyword, Token equals, Token endToken) {
     debugEvent("endFunctionTypeAlias");
-    String documentationComment = getDocumentationComment(typedefKeyword);
     List<TypeVariableBuilder> typeVariables;
     String name;
     int charOffset;
@@ -1066,7 +1122,9 @@
       }
     }
     List<MetadataBuilder> metadata = pop();
-    library.addFunctionTypeAlias(documentationComment, metadata, name,
+    Token metadataToken = pop();
+    var docComment = documentationComment(typedefKeyword, metadataToken);
+    library.addFunctionTypeAlias(docComment?.text, metadata, name,
         typeVariables, functionType, charOffset);
     checkEmpty(typedefKeyword.charOffset);
   }
@@ -1082,9 +1140,9 @@
         (covariantToken != null ? covariantMask : 0) |
         Modifier.validateVarFinalOrConst(varFinalOrConst?.lexeme);
     List<MetadataBuilder> metadata = pop();
-    String documentationComment = getDocumentationComment(beginToken);
-    library.addFields(
-        documentationComment, metadata, modifiers, type, fieldsInfo);
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
+    library.addFields(docComment?.text, metadata, modifiers, type, fieldsInfo);
     checkEmpty(beginToken.charOffset);
   }
 
@@ -1099,9 +1157,9 @@
         (covariantToken != null ? covariantMask : 0) |
         Modifier.validateVarFinalOrConst(varFinalOrConst?.lexeme);
     List<MetadataBuilder> metadata = pop();
-    String documentationComment = getDocumentationComment(beginToken);
-    library.addFields(
-        documentationComment, metadata, modifiers, type, fieldsInfo);
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
+    library.addFields(docComment?.text, metadata, modifiers, type, fieldsInfo);
   }
 
   @override
@@ -1112,6 +1170,7 @@
     // TODO(paulberry): type variable metadata should not be ignored.  See
     // dartbug.com/28981.
     /* List<MetadataBuilder> metadata = */ pop();
+    pop(); // metadataToken
 
     push(library.addTypeVariable(name, null, charOffset));
   }
@@ -1151,6 +1210,7 @@
     int charOffset = popCharOffset();
     Object containingLibrary = pop();
     List<MetadataBuilder> metadata = pop();
+    pop(); // metadataToken
     if (hasName) {
       library.addPartOf(metadata, "$containingLibrary", null, charOffset);
     } else {
@@ -1196,9 +1256,10 @@
     Object name = pop();
     int modifiers = pop();
     List<MetadataBuilder> metadata = pop();
-    String documentationComment = getDocumentationComment(beginToken);
+    Token metadataToken = pop();
+    var docComment = documentationComment(beginToken, metadataToken);
     library.addFactoryMethod(
-        documentationComment,
+        docComment?.text,
         metadata,
         modifiers,
         name,
@@ -1261,6 +1322,7 @@
   void handleInvalidMember(Token endToken) {
     debugEvent("InvalidMember");
     pop(); // metadata star
+    pop(); // metadataToken
   }
 
   @override
@@ -1297,32 +1359,60 @@
     library.addProblem(message, charOffset, length, uri, context: context);
   }
 
+  static int _chooseCodeStartOffset(
+      _DocumentationComment docComment, Token metadataToken, Token beginToken) {
+    if (docComment != null && metadataToken != null) {
+      return min(docComment.offset, metadataToken.charOffset);
+    }
+    if (docComment != null) {
+      return docComment.offset;
+    }
+    if (metadataToken != null) {
+      return metadataToken.charOffset;
+    }
+    return beginToken.offset;
+  }
+
+  /// Return the documentation comment for the [beginToken] or [metadataToken],
+  /// or `null` if there is no preceding documentation comment in either of
+  /// these nodes.
+  static _DocumentationComment documentationComment(
+      Token beginToken, Token metadataToken) {
+    return documentationCommentBefore(beginToken) ??
+        documentationCommentBefore(metadataToken);
+  }
+
   /// Return the documentation comment for the entity that starts at the
   /// given [token], or `null` if there is no preceding documentation comment.
-  static String getDocumentationComment(Token token) {
-    Token docToken = token.precedingComments;
-    if (docToken == null) return null;
+  static _DocumentationComment documentationCommentBefore(Token token) {
+    Token commentToken = token?.precedingComments;
+    if (commentToken == null) return null;
     bool inSlash = false;
-    var buffer = new StringBuffer();
-    while (docToken != null) {
-      String lexeme = docToken.lexeme;
+    Token firstDocToken;
+    StringBuffer buffer;
+    while (commentToken != null) {
+      String lexeme = commentToken.lexeme;
       if (lexeme.startsWith('/**')) {
         inSlash = false;
-        buffer.clear();
+        firstDocToken = commentToken;
+        buffer = new StringBuffer();
         buffer.write(lexeme);
       } else if (lexeme.startsWith('///')) {
-        if (!inSlash) {
+        if (!inSlash || buffer == null) {
           inSlash = true;
-          buffer.clear();
+          firstDocToken = commentToken;
+          buffer = new StringBuffer();
         }
         if (buffer.isNotEmpty) {
           buffer.writeln();
         }
         buffer.write(lexeme);
       }
-      docToken = docToken.next;
+      commentToken = commentToken.next;
     }
-    return buffer.toString();
+    if (buffer == null) return null;
+    return new _DocumentationComment(
+        firstDocToken.charOffset, buffer.toString());
   }
 
   @override
@@ -1330,3 +1420,10 @@
     // printEvent('OutlineBuilder: $name');
   }
 }
+
+class _DocumentationComment {
+  final int offset;
+  final String text;
+
+  _DocumentationComment(this.offset, this.text);
+}
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 7342f1c..2376e21 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -290,27 +290,30 @@
       }
     }
 
-    const String nativeExtensionScheme = "dart-ext:";
-    bool isExternal = uri.startsWith(nativeExtensionScheme);
-    if (isExternal) {
-      uri = uri.substring(nativeExtensionScheme.length);
-      uriOffset += nativeExtensionScheme.length;
-    }
-
-    Uri resolvedUri = resolve(this.uri, uri, uriOffset);
-
     LibraryBuilder builder = null;
-    if (isExternal) {
-      if (resolvedUri.scheme == "package") {
+
+    Uri resolvedUri;
+    String nativePath;
+    const String nativeExtensionScheme = "dart-ext:";
+    if (uri.startsWith(nativeExtensionScheme)) {
+      String strippedUri = uri.substring(nativeExtensionScheme.length);
+      if (strippedUri.startsWith("package")) {
+        resolvedUri = resolve(
+            this.uri, strippedUri, uriOffset + nativeExtensionScheme.length);
         resolvedUri = loader.target.translateUri(resolvedUri);
+        nativePath = resolvedUri.toString();
+      } else {
+        resolvedUri = new Uri(scheme: "dart-ext", pathSegments: [uri]);
+        nativePath = uri;
       }
     } else {
+      resolvedUri = resolve(this.uri, uri, uriOffset);
       builder = loader.read(resolvedUri, charOffset, accessor: this);
     }
 
     imports.add(new Import(this, builder, deferred, prefix, combinators,
         configurations, charOffset, prefixCharOffset, importIndex,
-        nativeImportUri: builder == null ? resolvedUri : null));
+        nativeImportPath: nativePath));
   }
 
   void addPart(List<MetadataBuilder> metadata, String uri, int charOffset) {
@@ -341,7 +344,9 @@
       int startCharOffset,
       int charOffset,
       int charEndOffset,
-      int supertypeOffset);
+      int supertypeOffset,
+      int codeStartOffset,
+      int codeEndOffset);
 
   void addNamedMixinApplication(
       String documentationComment,
@@ -351,7 +356,9 @@
       int modifiers,
       T mixinApplication,
       List<T> interfaces,
-      int charOffset);
+      int charOffset,
+      int codeStartOffset,
+      int codeEndOffset);
 
   void addField(
       String documentationComment,
@@ -409,6 +416,8 @@
       int charOpenParenOffset,
       int charEndOffset,
       String nativeMethodName,
+      int codeStartOffset,
+      int codeEndOffset,
       {bool isTopLevel});
 
   void addEnum(
@@ -600,9 +609,7 @@
       if (part == this) {
         addCompileTimeError(messagePartOfSelf, -1, noLength, fileUri);
       } else if (seenParts.add(part.fileUri)) {
-        if (part.partOfLibrary != null &&
-            // TODO(askesc): Remove this hack when co19 fix is rolled in.
-            !part.fileUri.path.endsWith("/co19/src/Utils/expect_common.dart")) {
+        if (part.partOfLibrary != null) {
           addProblem(messagePartOfTwoLibraries, -1, noLength, part.fileUri,
               context: [
                 messagePartOfTwoLibrariesContext.withLocation(
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index d034261..4e6ed0c 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -11,10 +11,13 @@
 import 'package:kernel/ast.dart'
     show
         Arguments,
+        BottomType,
         Class,
         Component,
+        DartType,
         Expression,
         FunctionNode,
+        InterfaceType,
         Library,
         LibraryDependency,
         ProcedureKind,
@@ -115,6 +118,10 @@
   // Used when building directly to kernel.
   ClassHierarchy hierarchy;
   CoreTypes coreTypes;
+  // Used when checking whether a return type of an async function is valid.
+  DartType futureOfBottom;
+  DartType iterableOfBottom;
+  DartType streamOfBottom;
 
   @override
   TypeInferenceEngine typeInferenceEngine;
@@ -696,7 +703,14 @@
   void ignoreAmbiguousSupertypes(Class cls, Supertype a, Supertype b) {}
 
   void computeCoreTypes(Component component) {
+    DartType Function(Class) instantiateWithBottom =
+        (Class cls) => new InterfaceType(cls, <DartType>[const BottomType()]);
+
     coreTypes = new CoreTypes(component);
+    futureOfBottom = instantiateWithBottom(coreTypes.futureClass);
+    iterableOfBottom = instantiateWithBottom(coreTypes.iterableClass);
+    streamOfBottom = instantiateWithBottom(coreTypes.streamClass);
+
     ticker.logMs("Computed core types");
   }
 
diff --git a/pkg/front_end/lib/src/fasta/source/stack_listener.dart b/pkg/front_end/lib/src/fasta/source/stack_listener.dart
index df55a69..a6d853c 100644
--- a/pkg/front_end/lib/src/fasta/source/stack_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/stack_listener.dart
@@ -52,6 +52,7 @@
   IdentifierList,
   Initializers,
   Metadata,
+  MetadataToken,
   Modifiers,
   ParameterDefaultValue,
   Prefix,
diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart
index 9da988e..38505c3 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/inference_helper.dart
@@ -2,10 +2,11 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:kernel/ast.dart' show Arguments, Expression, FunctionType;
-
 import '../fasta_codes.dart' show LocatedMessage, Message;
 
+import '../kernel/kernel_ast_api.dart'
+    show ArgumentsJudgment, Expression, FunctionType;
+
 abstract class InferenceHelper {
   Expression wrapInCompileTimeError(Expression expression, Message message);
 
@@ -13,7 +14,7 @@
       {List<LocatedMessage> context});
 
   LocatedMessage checkArgumentsForType(
-      FunctionType function, Arguments arguments, int offset);
+      FunctionType function, ArgumentsJudgment arguments, int offset);
 
   void addProblem(Message message, int charOffset, int length);
 
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index dd64b16..ac71bab 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -189,8 +189,10 @@
 GetterNotFound/example: Fail
 GetterWithFormals/example: Fail
 IllegalAssignmentToNonAssignable/script1: Fail
+IllegalAsyncGeneratorVoidReturnType/analyzerCode: Fail # The analyzer doesn't report this error.
 IllegalMixin/example: Fail
 IllegalMixinDueToConstructors/example: Fail
+IllegalSyncGeneratorVoidReturnType/analyzerCode: Fail # The analyzer doesn't report this error.
 ImplementsBeforeExtends/script: Fail
 ImplementsBeforeWith/script: Fail
 ImplicitCallOfNonMethod/example: Fail
@@ -343,6 +345,7 @@
 ThisOrSuperAccessInFieldInitializer/example: Fail
 TooFewArguments/example: Fail
 TooManyArguments/example: Fail
+TooManyArgumentsCouldBeNamed/example: Fail
 TopLevelOperator/script1: Fail
 TopLevelOperator/script2: Fail
 TopLevelOperator/script3: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index c99d333..29f8aa0 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1300,11 +1300,19 @@
   dart2jsCode: "*fatal*"
 
 TooManyArguments:
-  template: "Too many positional arguments: #count allowed, #count2 given."
+  template: "Too many positional arguments: #count allowed, but #count2 found."
+  tip: "Try removing the extra positional arguments."
   severity: ERROR_LEGACY_WARNING
   analyzerCode: EXTRA_POSITIONAL_ARGUMENTS
   dart2jsCode: "*fatal*"
 
+TooManyArgumentsCouldBeNamed:
+  template: "Too many positional arguments: #count allowed, but #count2 found."
+  tip: "Try removing the extra positional arguments or specifying the name for named arguments."
+  severity: ERROR_LEGACY_WARNING
+  analyzerCode: EXTRA_POSITIONAL_ARGUMENTS_COULD_BE_NAMED
+  dart2jsCode: "*fatal*"
+
 NoSuchNamedParameter:
   template: "No named parameter with the name '#name'."
   severity: ERROR_LEGACY_WARNING
@@ -1660,6 +1668,57 @@
 NoUnnamedConstructorInObject:
   template: "'Object' has no unnamed constructor."
 
+IllegalAsyncGeneratorReturnType:
+  template: "Functions marked 'async*' must have a return type assignable to 'Stream'."
+  severity: ERROR
+  analyzerCode: ILLEGAL_ASYNC_GENERATOR_RETURN_TYPE
+  dart2jsCode: "*fatal*"
+  script:
+    - >-
+      int g() async* {
+        yield 0;
+      }
+
+IllegalAsyncGeneratorVoidReturnType:
+  template: "Functions marked 'async*' can't have return type 'void'."
+  severity: ERROR
+  dart2jsCode: "*fatal*"
+  script:
+    - >-
+      void g() async* {
+      }
+
+IllegalAsyncReturnType:
+  template: "Functions marked 'async' must have a return type assignable to 'Future'."
+  severity: ERROR
+  analyzerCode: ILLEGAL_ASYNC_RETURN_TYPE
+  dart2jsCode: "*fatal*"
+  script:
+    - >-
+      int f() async {
+        return 0;
+      }
+
+IllegalSyncGeneratorReturnType:
+  template: "Functions marked 'sync*' must have a return type assignable to 'Iterable'."
+  severity: ERROR
+  analyzerCode: ILLEGAL_SYNC_GENERATOR_RETURN_TYPE
+  dart2jsCode: "*fatal*"
+  script:
+    - >-
+      int g() sync* {
+        yield 0;
+      }
+
+IllegalSyncGeneratorVoidReturnType:
+  template: "Functions marked 'sync*' can't have return type 'void'."
+  severity: ERROR
+  dart2jsCode: "*fatal*"
+  script:
+    - >-
+      void g() sync* {
+      }
+
 IllegalMixinDueToConstructors:
   template: "Can't use '#name' as a mixin because it has constructors."
   analyzerCode: MIXIN_DECLARES_CONSTRUCTOR
@@ -2098,7 +2157,6 @@
 
 DuplicatedNamePreviouslyUsedCause:
   template: "Previous use of '#name'."
-  analyzerCode: REFERENCED_BEFORE_DECLARATION
   severity: CONTEXT
 
 DuplicatedNamedArgument:
diff --git a/pkg/front_end/pubspec.yaml b/pkg/front_end/pubspec.yaml
index b0448a3..77c908e 100644
--- a/pkg/front_end/pubspec.yaml
+++ b/pkg/front_end/pubspec.yaml
@@ -23,7 +23,7 @@
   build_integration:
     path: ../build_integration
   dart_style: '^1.0.7'
-  json_rpc_2: ^2.0.4
+  json_rpc_2: ^2.0.9
   mockito: ^2.0.2
   stream_channel: ^1.6.1
   test: ^0.12.0
diff --git a/pkg/front_end/test/fasta/expression_test.dart b/pkg/front_end/test/fasta/expression_test.dart
index b2b315c..ebe6423 100644
--- a/pkg/front_end/test/fasta/expression_test.dart
+++ b/pkg/front_end/test/fasta/expression_test.dart
@@ -38,8 +38,12 @@
 import 'package:front_end/src/fasta/incremental_compiler.dart'
     show IncrementalCompiler;
 
+import 'package:kernel/target/targets.dart' show TargetFlags;
+
 import 'package:kernel/text/ast_to_text.dart' show Printer;
 
+import 'package:vm/target/vm.dart' show VmTarget;
+
 import '../../lib/src/fasta/testing/kernel_chain.dart' show runDiff, openWrite;
 
 import '../../lib/src/fasta/kernel/utils.dart' show writeComponentToFile;
@@ -363,6 +367,7 @@
 
   final CompilerOptions optionBuilder = new CompilerOptions()
     ..strongMode = true
+    ..target = new VmTarget(new TargetFlags(strongMode: true))
     ..reportMessages = true
     ..verbose = true
     ..fileSystem = fs
diff --git a/pkg/front_end/test/fasta/generator_to_string_test.dart b/pkg/front_end/test/fasta/generator_to_string_test.dart
index 45642d3..9de0d3f 100644
--- a/pkg/front_end/test/fasta/generator_to_string_test.dart
+++ b/pkg/front_end/test/fasta/generator_to_string_test.dart
@@ -128,7 +128,7 @@
     KernelBodyBuilder helper = new KernelBodyBuilder(
         libraryBuilder, null, null, null, null, null, null, false, uri, null);
 
-    Generator generator = new ThisAccessGenerator(helper, token, false);
+    Generator generator = new ThisAccessGenerator(helper, token, false, false);
 
     Library library = new Library(uri);
     Class cls = new Class();
@@ -182,17 +182,17 @@
         " getter: $uri::myGetter, setter: $uri::mySetter,"
         " receiverVariable: null, indexVariable: null)",
         new KernelIndexedAccessGenerator.internal(
-            helper, token, expression, index, getter, setter));
+            helper, token, token, expression, index, getter, setter));
     check(
         "ThisIndexedAccessGenerator(offset: 4, index: index,"
         " getter: $uri::myGetter, setter: $uri::mySetter, indexVariable: null)",
         new KernelThisIndexedAccessGenerator(
-            helper, token, index, getter, setter));
+            helper, token, token, index, getter, setter));
     check(
         "SuperIndexedAccessGenerator(offset: 4, index: index,"
         " getter: $uri::myGetter, setter: $uri::mySetter, indexVariable: null)",
         new KernelSuperIndexedAccessGenerator(
-            helper, token, index, getter, setter));
+            helper, token, token, index, getter, setter));
     check(
         "StaticAccessGenerator(offset: 4, readTarget: $uri::myGetter,"
         " writeTarget: $uri::mySetter)",
@@ -203,7 +203,7 @@
         new KernelLoadLibraryGenerator(helper, token, loadLibraryBuilder));
     check(
         "ThisAccessGenerator(offset: 4, isInitializer: false, isSuper: false)",
-        new ThisAccessGenerator(helper, token, false));
+        new ThisAccessGenerator(helper, token, false, false));
     check("IncompleteErrorGenerator(offset: 4, message: Unspecified)",
         new IncompleteErrorGenerator(helper, token, getter, message));
     check("SendAccessGenerator(offset: 4, name: bar, arguments: (\"arg\"))",
diff --git a/pkg/front_end/test/fasta/incremental_expectations.dart b/pkg/front_end/test/fasta/incremental_expectations.dart
index efdb6ed..6ac7b34 100644
--- a/pkg/front_end/test/fasta/incremental_expectations.dart
+++ b/pkg/front_end/test/fasta/incremental_expectations.dart
@@ -32,7 +32,7 @@
       data = <String>[data];
     }
     if (data is List) {
-      return new IncrementalExpectation(data);
+      return new IncrementalExpectation(data.cast<String>());
     }
     return new IncrementalExpectation(extractMessages(data),
         commitChangesShouldFail: extractCommitChangesShouldFail(data),
diff --git a/pkg/front_end/test/fasta/incremental_hello_test.dart b/pkg/front_end/test/fasta/incremental_hello_test.dart
index 40fb9d3..bd0929e 100644
--- a/pkg/front_end/test/fasta/incremental_hello_test.dart
+++ b/pkg/front_end/test/fasta/incremental_hello_test.dart
@@ -10,6 +10,10 @@
 
 import 'package:kernel/ast.dart' show Component;
 
+import 'package:kernel/target/targets.dart' show TargetFlags;
+
+import 'package:vm/target/vm.dart' show VmTarget;
+
 import "package:front_end/src/api_prototype/compiler_options.dart"
     show CompilerOptions;
 
@@ -36,6 +40,7 @@
 test({bool sdkFromSource}) async {
   final CompilerOptions optionBuilder = new CompilerOptions()
     ..packagesFileUri = Uri.base.resolve(".packages")
+    ..target = new VmTarget(new TargetFlags(strongMode: false))
     ..strongMode = false
     ..onProblem = problemHandler;
 
diff --git a/pkg/front_end/test/fasta/messages_test.dart b/pkg/front_end/test/fasta/messages_test.dart
index 9ba85b8..b06f4ec 100644
--- a/pkg/front_end/test/fasta/messages_test.dart
+++ b/pkg/front_end/test/fasta/messages_test.dart
@@ -10,9 +10,13 @@
 
 import "dart:typed_data" show Uint8List;
 
+import "package:kernel/target/targets.dart" show TargetFlags;
+
 import "package:testing/testing.dart"
     show Chain, ChainContext, Result, Step, TestDescription, runMe;
 
+import "package:vm/target/vm.dart" show VmTarget;
+
 import "package:yaml/yaml.dart" show YamlList, YamlMap, YamlNode, loadYamlNode;
 
 import 'package:front_end/src/api_prototype/compiler_options.dart'
@@ -318,7 +322,7 @@
   final Uint8List bytes;
 
   BytesExample(String name, String code, this.node)
-      : bytes = new Uint8List.fromList(node.value),
+      : bytes = new Uint8List.fromList(node.cast<int>()),
         super(name, code);
 }
 
@@ -455,6 +459,7 @@
         new CompilerOptions()
           ..sdkSummary = computePlatformBinariesLocation()
               .resolve("vm_platform_strong.dill")
+          ..target = new VmTarget(new TargetFlags(strongMode: true))
           ..fileSystem = new HybridFileSystem(suite.fileSystem)
           ..onProblem = (FormattedMessage problem, Severity severity,
               List<FormattedMessage> context) {
diff --git a/pkg/front_end/test/fasta/parser/type_info_test.dart b/pkg/front_end/test/fasta/parser/type_info_test.dart
index 6cde453..ea5dfdc 100644
--- a/pkg/front_end/test/fasta/parser/type_info_test.dart
+++ b/pkg/front_end/test/fasta/parser/type_info_test.dart
@@ -13,21 +13,93 @@
 
 main() {
   defineReflectiveSuite(() {
+    defineReflectiveTests(NoTypeInfoTest);
+    defineReflectiveTests(PrefixedTypeInfoTest);
+    defineReflectiveTests(SimpleTypeInfoTest);
+    defineReflectiveTests(SimpleTypeWith1ArgumentTest);
     defineReflectiveTests(TypeInfoTest);
+    defineReflectiveTests(VoidTypeInfoTest);
+
+    defineReflectiveTests(NoTypeParamOrArgTest);
+    defineReflectiveTests(SimpleTypeParamOrArgTest);
     defineReflectiveTests(TypeParamOrArgInfoTest);
   });
 }
 
 @reflectiveTest
-class TypeInfoTest {
-  void test_noType() {
+class NoTypeInfoTest {
+  void test_basic() {
     final Token start = scanString('before ;').tokens;
 
     expect(noType.couldBeExpression, isFalse);
     expect(noType.skipType(start), start);
   }
 
-  void test_noType_ensureTypeNotVoid() {
+  void test_compute() {
+    expectInfo(noType, '');
+    expectInfo(noType, ';');
+    expectInfo(noType, '( foo');
+    expectInfo(noType, '< foo');
+    expectInfo(noType, '= foo');
+    expectInfo(noType, '* foo');
+    expectInfo(noType, 'do foo');
+    expectInfo(noType, 'get foo');
+    expectInfo(noType, 'set foo');
+    expectInfo(noType, 'operator *');
+
+    expectInfo(noType, 'C', required: false);
+    expectInfo(noType, 'C;', required: false);
+    expectInfo(noType, 'C(', required: false);
+    expectInfo(noType, 'C<', required: false);
+    expectInfo(noType, 'C.', required: false);
+    expectInfo(noType, 'C=', required: false);
+    expectInfo(noType, 'C*', required: false);
+    expectInfo(noType, 'C do', required: false);
+
+    expectInfo(noType, 'C.a', required: false);
+    expectInfo(noType, 'C.a;', required: false);
+    expectInfo(noType, 'C.a(', required: false);
+    expectInfo(noType, 'C.a<', required: false);
+    expectInfo(noType, 'C.a=', required: false);
+    expectInfo(noType, 'C.a*', required: false);
+    expectInfo(noType, 'C.a do', required: false);
+
+    expectInfo(noType, 'C<T>', required: false);
+    expectInfo(noType, 'C<T>;', required: false);
+    expectInfo(noType, 'C<T>(', required: false);
+    expectInfo(noType, 'C<T> do', required: false);
+    expectInfo(noType, 'C<void>', required: false);
+
+    expectInfo(noType, 'C<T>= foo', required: false);
+    expectInfo(noType, 'C<T>= get', required: false);
+    expectInfo(noType, 'C<T>= set', required: false);
+    expectInfo(noType, 'C<T>= operator', required: false);
+    expectInfo(noType, 'C<T>= Function', required: false);
+
+    expectInfo(noType, 'C<T>> foo', required: false);
+    expectInfo(noType, 'C<T>> get', required: false);
+    expectInfo(noType, 'C<T>> set', required: false);
+    expectInfo(noType, 'C<T>> operator', required: false);
+    expectInfo(noType, 'C<T>> Function', required: false);
+
+    expectInfo(noType, 'C<T>>= foo', required: false);
+    expectInfo(noType, 'C<T>>= get', required: false);
+    expectInfo(noType, 'C<T>>= set', required: false);
+    expectInfo(noType, 'C<T>>= operator', required: false);
+    expectInfo(noType, 'C<T>>= Function', required: false);
+
+    expectInfo(noType, 'C<S,T>', required: false);
+    expectInfo(noType, 'C<S<T>>', required: false);
+    expectInfo(noType, 'C.a<T>', required: false);
+    expectInfo(noType, 'C<S,T>=', required: false);
+    expectInfo(noType, 'C<S<T>>=', required: false);
+    expectInfo(noType, 'C.a<T>=', required: false);
+
+    expectInfo(noType, 'Function(int x)', required: false);
+    expectInfo(noType, 'Function<T>(int x)', required: false);
+  }
+
+  void test_ensureTypeNotVoid() {
     final Token start = scanString('before ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -36,12 +108,12 @@
     expect(listener.calls, [
       'handleIdentifier  typeReference',
       'handleNoTypeArguments ;',
-      'handleType  ;',
+      'handleType ',
     ]);
     expect(listener.errors, [new ExpectedError(codeExpectedType, 7, 1)]);
   }
 
-  void test_noType_ensureTypeOrVoid() {
+  void test_ensureTypeOrVoid() {
     final Token start = scanString('before ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -50,12 +122,12 @@
     expect(listener.calls, [
       'handleIdentifier  typeReference',
       'handleNoTypeArguments ;',
-      'handleType  ;',
+      'handleType ',
     ]);
     expect(listener.errors, [new ExpectedError(codeExpectedType, 7, 1)]);
   }
 
-  void test_noType_parseType() {
+  void test_parseType() {
     final Token start = scanString('before ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -64,7 +136,7 @@
     expect(listener.errors, isNull);
   }
 
-  void test_noType_parseTypeNotVoid() {
+  void test_parseTypeNotVoid() {
     final Token start = scanString('before ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -72,15 +144,41 @@
     expect(listener.calls, ['handleNoType before']);
     expect(listener.errors, isNull);
   }
+}
 
-  void test_voidType() {
+@reflectiveTest
+class VoidTypeInfoTest {
+  void test_basic() {
     final Token start = scanString('before void ;').tokens;
 
     expect(voidType.skipType(start), start.next);
     expect(voidType.couldBeExpression, isFalse);
   }
 
-  void test_voidType_ensureTypeNotVoid() {
+  void test_compute() {
+    expectInfo(voidType, 'void');
+    expectInfo(voidType, 'void;');
+    expectInfo(voidType, 'void(');
+    expectInfo(voidType, 'void<');
+    expectInfo(voidType, 'void=');
+    expectInfo(voidType, 'void*');
+    expectInfo(voidType, 'void<T>');
+    expectInfo(voidType, 'void do');
+    expectInfo(voidType, 'void foo');
+    expectInfo(voidType, 'void get');
+    expectInfo(voidType, 'void set');
+    expectInfo(voidType, 'void operator');
+    expectInfo(voidType, 'void Function');
+
+    expectInfo(voidType, 'void Function()', required: false);
+    expectInfo(voidType, 'void Function<T>()', required: false);
+    expectInfo(voidType, 'void Function(int)', required: false);
+    expectInfo(voidType, 'void Function<T>(int)', required: false);
+    expectInfo(voidType, 'void Function(int x)', required: false);
+    expectInfo(voidType, 'void Function<T>(int x)', required: false);
+  }
+
+  void test_ensureTypeNotVoid() {
     final Token start = scanString('before void ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -88,12 +186,12 @@
     expect(listener.calls, [
       'handleIdentifier void typeReference',
       'handleNoTypeArguments ;',
-      'handleType void ;',
+      'handleType void',
     ]);
     expect(listener.errors, [new ExpectedError(codeInvalidVoid, 7, 4)]);
   }
 
-  void test_voidType_ensureTypeOrVoid() {
+  void test_ensureTypeOrVoid() {
     final Token start = scanString('before void ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -102,7 +200,7 @@
     expect(listener.errors, isNull);
   }
 
-  void test_voidType_parseType() {
+  void test_parseType() {
     final Token start = scanString('before void ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -111,7 +209,7 @@
     expect(listener.errors, isNull);
   }
 
-  void test_voidType_parseTypeNotVoid() {
+  void test_parseTypeNotVoid() {
     final Token start = scanString('before void ;').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
@@ -119,10 +217,29 @@
     expect(listener.calls, [
       'handleIdentifier void typeReference',
       'handleNoTypeArguments ;',
-      'handleType void ;',
+      'handleType void',
     ]);
     expect(listener.errors, [new ExpectedError(codeInvalidVoid, 7, 4)]);
   }
+}
+
+@reflectiveTest
+class PrefixedTypeInfoTest {
+  void test_compute() {
+    expectInfo(prefixedType, 'C.a', required: true);
+    expectInfo(prefixedType, 'C.a;', required: true);
+    expectInfo(prefixedType, 'C.a(', required: true);
+    expectInfo(prefixedType, 'C.a<', required: true);
+    expectInfo(prefixedType, 'C.a=', required: true);
+    expectInfo(prefixedType, 'C.a*', required: true);
+    expectInfo(prefixedType, 'C.a do', required: true);
+
+    expectInfo(prefixedType, 'C.a foo');
+    expectInfo(prefixedType, 'C.a get');
+    expectInfo(prefixedType, 'C.a set');
+    expectInfo(prefixedType, 'C.a operator');
+    expectInfo(prefixedType, 'C.a Function');
+  }
 
   void test_prefixedTypeInfo() {
     final Token start = scanString('before C.a ;').tokens;
@@ -139,7 +256,7 @@
         'handleIdentifier a typeReferenceContinuation',
         'handleQualified .',
         'handleNoTypeArguments ;',
-        'handleType C ;',
+        'handleType C',
       ]);
       expect(listener.errors, isNull);
     }
@@ -156,6 +273,35 @@
     listener = new TypeInfoListener();
     assertResult(prefixedType.parseType(start, new Parser(listener)));
   }
+}
+
+@reflectiveTest
+class SimpleTypeInfoTest {
+  void test_compute() {
+    expectInfo(simpleType, 'C', required: true);
+    expectInfo(simpleType, 'C;', required: true);
+    expectInfo(simpleType, 'C(', required: true);
+    expectInfo(simpleType, 'C<', required: true);
+    expectComplexInfo('C.',
+        required: true, expectedErrors: [error(codeExpectedType, 2, 0)]);
+    expectInfo(simpleType, 'C=', required: true);
+    expectInfo(simpleType, 'C*', required: true);
+    expectInfo(simpleType, 'C do', required: true);
+
+    expectInfo(simpleType, 'C foo');
+    expectInfo(simpleType, 'C get');
+    expectInfo(simpleType, 'C set');
+    expectInfo(simpleType, 'C operator');
+    expectInfo(simpleType, 'C this');
+    expectInfo(simpleType, 'C Function');
+
+    expectInfo(simpleType, 'C Function()', required: false);
+    expectInfo(simpleType, 'C Function<T>()', required: false);
+    expectInfo(simpleType, 'C Function(int)', required: false);
+    expectInfo(simpleType, 'C Function<T>(int)', required: false);
+    expectInfo(simpleType, 'C Function(int x)', required: false);
+    expectInfo(simpleType, 'C Function<T>(int x)', required: false);
+  }
 
   void test_simpleTypeInfo() {
     final Token start = scanString('before C ;').tokens;
@@ -170,7 +316,7 @@
       expect(listener.calls, [
         'handleIdentifier C typeReference',
         'handleNoTypeArguments ;',
-        'handleType C ;',
+        'handleType C',
       ]);
       expect(listener.errors, isNull);
     }
@@ -187,8 +333,50 @@
     listener = new TypeInfoListener();
     assertResult(simpleType.parseType(start, new Parser(listener)));
   }
+}
 
-  void test_simpleTypeArgumentsInfo() {
+@reflectiveTest
+class SimpleTypeWith1ArgumentTest {
+  void test_compute_gt() {
+    expectInfo(simpleTypeWith1Argument, 'C<T>', required: true);
+    expectInfo(simpleTypeWith1Argument, 'C<T>;', required: true);
+    expectInfo(simpleTypeWith1Argument, 'C<T>(', required: true);
+    expectInfo(simpleTypeWith1Argument, 'C<T> do', required: true);
+
+    expectInfo(simpleTypeWith1Argument, 'C<T> foo');
+    expectInfo(simpleTypeWith1Argument, 'C<T> get');
+    expectInfo(simpleTypeWith1Argument, 'C<T> set');
+    expectInfo(simpleTypeWith1Argument, 'C<T> operator');
+    expectInfo(simpleTypeWith1Argument, 'C<T> Function');
+  }
+
+  void test_compute_gt_eq() {
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>=', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>=;', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>=(', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>= do', required: true);
+
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>= foo', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>= get', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>= set', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>= operator', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtEq, 'C<T>= Function', required: true);
+  }
+
+  void test_compute_gt_gt() {
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>>', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>>;', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>>(', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>> do', required: true);
+
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>> foo', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>> get', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>> set', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>> operator', required: true);
+    expectInfo(simpleTypeWith1ArgumentGtGt, 'C<T>> Function', required: true);
+  }
+
+  void test_gt() {
     final Token start = scanString('before C<T> ;').tokens;
     final Token expectedEnd = start.next.next.next.next;
     expect(expectedEnd.lexeme, '>');
@@ -204,9 +392,9 @@
         'beginTypeArguments <',
         'handleIdentifier T typeReference',
         'handleNoTypeArguments >',
-        'handleType T >',
+        'handleType T',
         'endTypeArguments 1 < >',
-        'handleType C ;',
+        'handleType C',
       ]);
       expect(listener.errors, isNull);
     }
@@ -228,18 +416,101 @@
         simpleTypeWith1Argument.parseType(start, new Parser(listener)));
   }
 
-  void test_computeType_basic() {
-    expectInfo(noType, '');
-    expectInfo(noType, ';');
-    expectInfo(noType, '( foo');
-    expectInfo(noType, '< foo');
-    expectInfo(noType, '= foo');
-    expectInfo(noType, '* foo');
-    expectInfo(noType, 'do foo');
-    expectInfo(noType, 'get foo');
-    expectInfo(noType, 'set foo');
-    expectInfo(noType, 'operator *');
+  void test_gt_eq() {
+    final Token start = scanString('before C<T>= ;').tokens;
+    final Token t = start.next.next.next;
+    final Token semicolon = t.next.next;
+    expect(semicolon.lexeme, ';');
 
+    Token skip = simpleTypeWith1ArgumentGtEq.skipType(start);
+    expect(skip.lexeme, '>');
+    expect(skip.next.lexeme, '=');
+    expect(skip.next.next, semicolon);
+    expect(simpleTypeWith1ArgumentGtEq.couldBeExpression, isFalse);
+
+    TypeInfoListener listener;
+    assertResult(Token actualEnd) {
+      expect(actualEnd.lexeme, '>');
+      expect(actualEnd.next.lexeme, '=');
+      expect(actualEnd.next.next, semicolon);
+      expect(listener.calls, [
+        'handleIdentifier C typeReference',
+        'beginTypeArguments <',
+        'handleIdentifier T typeReference',
+        'handleNoTypeArguments >',
+        'handleType T',
+        'endTypeArguments 1 < >',
+        'handleType C',
+      ]);
+      expect(listener.errors, isNull);
+    }
+
+    listener = new TypeInfoListener();
+    assertResult(simpleTypeWith1ArgumentGtEq.ensureTypeNotVoid(
+        start, new Parser(listener)));
+
+    listener = new TypeInfoListener();
+    assertResult(simpleTypeWith1ArgumentGtEq.ensureTypeOrVoid(
+        start, new Parser(listener)));
+
+    listener = new TypeInfoListener();
+    assertResult(simpleTypeWith1ArgumentGtEq.parseTypeNotVoid(
+        start, new Parser(listener)));
+
+    listener = new TypeInfoListener();
+    assertResult(
+        simpleTypeWith1ArgumentGtEq.parseType(start, new Parser(listener)));
+  }
+
+  void test_gt_gt() {
+    final Token start = scanString('before C<T>> ;').tokens;
+    final Token semicolon = start.next.next.next.next.next;
+    expect(semicolon.lexeme, ';');
+
+    Token skip = simpleTypeWith1ArgumentGtGt.skipType(start);
+    expect(skip.lexeme, '>');
+    expect(skip.next.lexeme, '>');
+    expect(skip.next.next, semicolon);
+    expect(simpleTypeWith1ArgumentGtGt.couldBeExpression, isFalse);
+
+    TypeInfoListener listener;
+    assertResult(Token actualEnd) {
+      expect(actualEnd.lexeme, '>');
+      expect(actualEnd.next.lexeme, '>');
+      expect(actualEnd.next.next, semicolon);
+      expect(listener.calls, [
+        'handleIdentifier C typeReference',
+        'beginTypeArguments <',
+        'handleIdentifier T typeReference',
+        'handleNoTypeArguments >',
+        'handleType T',
+        'endTypeArguments 1 < >',
+        'handleType C',
+      ]);
+      expect(listener.errors, isNull);
+    }
+
+    listener = new TypeInfoListener();
+    assertResult(simpleTypeWith1ArgumentGtGt.ensureTypeNotVoid(
+        start, new Parser(listener)));
+
+    listener = new TypeInfoListener();
+    assertResult(simpleTypeWith1ArgumentGtGt.ensureTypeOrVoid(
+        start, new Parser(listener)));
+
+    listener = new TypeInfoListener();
+    assertResult(simpleTypeWith1ArgumentGtGt.parseTypeNotVoid(
+        start, new Parser(listener)));
+
+    listener = new TypeInfoListener();
+    assertResult(
+        simpleTypeWith1ArgumentGtGt.parseType(start, new Parser(listener)));
+  }
+}
+
+@reflectiveTest
+class TypeInfoTest {
+  void test_computeType_basic() {
     expectInfo(noType, '.', required: false);
     expectComplexInfo('.', required: true, expectedErrors: [
       error(codeExpectedType, 0, 1),
@@ -277,7 +548,7 @@
       'handleNoType ',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function m',
+      'endFunctionType Function',
     ]);
     expectComplexInfo('Function<T>() m', expectedAfter: 'm', expectedCalls: [
       'beginTypeVariables <',
@@ -293,7 +564,7 @@
       'handleNoType ',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function m',
+      'endFunctionType Function',
     ]);
     expectComplexInfo('Function(int) m', expectedAfter: 'm', expectedCalls: [
       'handleNoTypeVariables (',
@@ -305,13 +576,13 @@
       'beginFormalParameter int MemberKind.GeneralizedFunctionType',
       'handleIdentifier int typeReference',
       'handleNoTypeArguments )',
-      'handleType int )',
+      'handleType int',
       'handleNoName )',
       'handleFormalParameterWithoutValue )',
       'endFormalParameter null null ) FormalParameterKind.mandatory '
           'MemberKind.GeneralizedFunctionType',
       'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function m',
+      'endFunctionType Function',
     ]);
     expectComplexInfo('Function<T>(int) m', expectedAfter: 'm', expectedCalls: [
       'beginTypeVariables <',
@@ -331,18 +602,15 @@
       'beginFormalParameter int MemberKind.GeneralizedFunctionType',
       'handleIdentifier int typeReference',
       'handleNoTypeArguments )',
-      'handleType int )',
+      'handleType int',
       'handleNoName )',
       'handleFormalParameterWithoutValue )',
       'endFormalParameter null null ) FormalParameterKind.mandatory'
           ' MemberKind.GeneralizedFunctionType',
       'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function m',
+      'endFunctionType Function',
     ]);
 
-    expectInfo(noType, 'Function(int x)', required: false);
-    expectInfo(noType, 'Function<T>(int x)', required: false);
-
     expectComplexInfo('Function(int x)', required: true);
     expectComplexInfo('Function<T>(int x)', required: true);
 
@@ -355,42 +623,7 @@
         expectedAfter: 'm');
   }
 
-  void test_computeType_identifier() {
-    expectInfo(noType, 'C', required: false);
-    expectInfo(noType, 'C;', required: false);
-    expectInfo(noType, 'C(', required: false);
-    expectInfo(noType, 'C<', required: false);
-    expectInfo(noType, 'C.', required: false);
-    expectInfo(noType, 'C=', required: false);
-    expectInfo(noType, 'C*', required: false);
-    expectInfo(noType, 'C do', required: false);
-
-    expectInfo(simpleType, 'C', required: true);
-    expectInfo(simpleType, 'C;', required: true);
-    expectInfo(simpleType, 'C(', required: true);
-    expectInfo(simpleType, 'C<', required: true);
-    expectComplexInfo('C.',
-        required: true, expectedErrors: [error(codeExpectedType, 2, 0)]);
-    expectInfo(simpleType, 'C=', required: true);
-    expectInfo(simpleType, 'C*', required: true);
-    expectInfo(simpleType, 'C do', required: true);
-
-    expectInfo(simpleType, 'C foo');
-    expectInfo(simpleType, 'C get');
-    expectInfo(simpleType, 'C set');
-    expectInfo(simpleType, 'C operator');
-    expectInfo(simpleType, 'C this');
-    expectInfo(simpleType, 'C Function');
-  }
-
   void test_computeType_identifierComplex() {
-    expectInfo(simpleType, 'C Function()', required: false);
-    expectInfo(simpleType, 'C Function<T>()', required: false);
-    expectInfo(simpleType, 'C Function(int)', required: false);
-    expectInfo(simpleType, 'C Function<T>(int)', required: false);
-    expectInfo(simpleType, 'C Function(int x)', required: false);
-    expectInfo(simpleType, 'C Function<T>(int x)', required: false);
-
     expectComplexInfo('C Function()', required: true);
     expectComplexInfo('C Function<T>()', required: true);
     expectComplexInfo('C Function(int)', required: true);
@@ -408,55 +641,35 @@
           'beginFunctionType C',
           'handleIdentifier C typeReference',
           'handleNoTypeArguments Function',
-          'handleType C Function',
+          'handleType C',
           'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
           'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-          'endFunctionType Function ',
+          'endFunctionType Function',
         ]);
   }
 
   void test_computeType_identifierTypeArg() {
-    expectInfo(noType, 'C<T>', required: false);
-    expectInfo(noType, 'C<T>;', required: false);
-    expectInfo(noType, 'C<T>(', required: false);
-    expectInfo(noType, 'C<T> do', required: false);
-    expectInfo(noType, 'C<void>', required: false);
-
-    expectInfo(simpleTypeWith1Argument, 'C<T>', required: true);
-    expectInfo(simpleTypeWith1Argument, 'C<T>;', required: true);
-    expectInfo(simpleTypeWith1Argument, 'C<T>(', required: true);
-    expectInfo(simpleTypeWith1Argument, 'C<T> do', required: true);
     expectComplexInfo('C<void>', required: true, expectedCalls: [
       'handleIdentifier C typeReference',
       'beginTypeArguments <',
       'handleVoidKeyword void',
       'endTypeArguments 1 < >',
-      'handleType C ',
+      'handleType C',
     ]);
-
-    expectInfo(simpleTypeWith1Argument, 'C<T> foo');
-    expectInfo(simpleTypeWith1Argument, 'C<T> get');
-    expectInfo(simpleTypeWith1Argument, 'C<T> set');
-    expectInfo(simpleTypeWith1Argument, 'C<T> operator');
-    expectInfo(simpleTypeWith1Argument, 'C<T> Function');
   }
 
   void test_computeType_identifierTypeArgComplex() {
-    expectInfo(noType, 'C<S,T>', required: false);
-    expectInfo(noType, 'C<S<T>>', required: false);
-    expectInfo(noType, 'C.a<T>', required: false);
-
     expectComplexInfo('C<S,T>', required: true, expectedCalls: [
       'handleIdentifier C typeReference',
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments ,',
-      'handleType S ,',
+      'handleType S',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 2 < >',
-      'handleType C ',
+      'handleType C',
     ]);
     expectComplexInfo('C<S<T>>', required: true, expectedCalls: [
       'handleIdentifier C typeReference',
@@ -465,23 +678,23 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType S >',
+      'handleType S',
       'endTypeArguments 1 < >',
-      'handleType C ',
+      'handleType C',
     ]);
     expectComplexInfo('C<S,T> f', expectedAfter: 'f', expectedCalls: [
       'handleIdentifier C typeReference',
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments ,',
-      'handleType S ,',
+      'handleType S',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 2 < >',
-      'handleType C f',
+      'handleType C',
     ]);
     expectComplexInfo('C<S<T>> f', expectedAfter: 'f', expectedCalls: [
       'handleIdentifier C typeReference',
@@ -490,11 +703,11 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType S >',
+      'handleType S',
       'endTypeArguments 1 < >',
-      'handleType C f',
+      'handleType C',
     ]);
   }
 
@@ -508,12 +721,12 @@
           'beginTypeArguments <',
           'handleIdentifier T typeReference',
           'handleNoTypeArguments >',
-          'handleType T >',
+          'handleType T',
           'endTypeArguments 1 < >',
-          'handleType C Function',
+          'handleType C',
           'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
           'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-          'endFunctionType Function ',
+          'endFunctionType Function',
         ]);
     expectComplexInfo('C<T> Function<T>(int x) Function<T>(int x)',
         required: false, expectedAfter: 'Function');
@@ -534,12 +747,12 @@
           'beginTypeArguments <',
           'handleIdentifier int typeReference',
           'handleNoTypeArguments double' /* was , */,
-          'handleType int double' /* was , */,
+          'handleType int' /* was , */,
           'handleIdentifier double typeReference',
           'handleNoTypeArguments >',
-          'handleType double >',
+          'handleType double',
           'endTypeArguments 2 < >',
-          'handleType G g',
+          'handleType G',
         ],
         expectedErrors: [
           error(codeExpectedButGot, 6, 6)
@@ -551,9 +764,9 @@
       'beginTypeArguments <',
       'handleIdentifier  typeReference',
       'handleNoTypeArguments >',
-      'handleType  >',
+      'handleType ',
       'endTypeArguments 1 < >',
-      'handleType C ',
+      'handleType C',
     ], expectedErrors: [
       error(codeExpectedType, 2, 1)
     ]);
@@ -565,9 +778,9 @@
           'beginTypeArguments <',
           'handleIdentifier  typeReference',
           'handleNoTypeArguments >',
-          'handleType  >',
+          'handleType ',
           'endTypeArguments 1 < >',
-          'handleType C f',
+          'handleType C',
         ],
         expectedErrors: [
           error(codeExpectedType, 2, 1)
@@ -580,7 +793,7 @@
 
   void test_computeType_nested() {
     expectNestedInfo(simpleType, '<T>');
-    expectNestedInfo(simpleTypeWith1Argument, '<T<S>>');
+    expectNestedInfo(simpleTypeWith1ArgumentGtGt, '<T<S>>');
     expectNestedComplexInfo('<T<S,R>>');
     expectNestedComplexInfo('<T<S Function()>>');
     expectNestedComplexInfo('<T<S Function()>>');
@@ -595,30 +808,6 @@
     expectNestedInfo(simpleTypeWith1Argument, '<T<S>,>');
   }
 
-  void test_computeType_prefixed() {
-    expectInfo(noType, 'C.a', required: false);
-    expectInfo(noType, 'C.a;', required: false);
-    expectInfo(noType, 'C.a(', required: false);
-    expectInfo(noType, 'C.a<', required: false);
-    expectInfo(noType, 'C.a=', required: false);
-    expectInfo(noType, 'C.a*', required: false);
-    expectInfo(noType, 'C.a do', required: false);
-
-    expectInfo(prefixedType, 'C.a', required: true);
-    expectInfo(prefixedType, 'C.a;', required: true);
-    expectInfo(prefixedType, 'C.a(', required: true);
-    expectInfo(prefixedType, 'C.a<', required: true);
-    expectInfo(prefixedType, 'C.a=', required: true);
-    expectInfo(prefixedType, 'C.a*', required: true);
-    expectInfo(prefixedType, 'C.a do', required: true);
-
-    expectInfo(prefixedType, 'C.a foo');
-    expectInfo(prefixedType, 'C.a get');
-    expectInfo(prefixedType, 'C.a set');
-    expectInfo(prefixedType, 'C.a operator');
-    expectInfo(prefixedType, 'C.a Function');
-  }
-
   void test_computeType_prefixedComplex() {
     expectComplexInfo('a < b, c > d', expectedAfter: 'd');
     expectComplexInfo('a < b, c > d', expectedAfter: 'd');
@@ -643,10 +832,10 @@
           'handleIdentifier a typeReferenceContinuation',
           'handleQualified .',
           'handleNoTypeArguments Function',
-          'handleType C Function',
+          'handleType C',
           'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
           'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-          'endFunctionType Function ',
+          'endFunctionType Function',
         ]);
     expectComplexInfo('C.a Function<T>(int x) Function<T>(int x)',
         required: false, expectedAfter: 'Function');
@@ -662,9 +851,9 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType C ',
+      'handleType C',
     ]);
 
     expectComplexInfo('C.a<T> f', expectedAfter: 'f', expectedCalls: [
@@ -674,9 +863,9 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType C f',
+      'handleType C',
     ]);
   }
 
@@ -710,52 +899,39 @@
           'beginTypeArguments <',
           'handleIdentifier T typeReference',
           'handleNoTypeArguments >',
-          'handleType T >',
+          'handleType T',
           'endTypeArguments 1 < >',
-          'handleType C Function',
+          'handleType C',
           'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
           'beginMetadataStar int',
           'endMetadataStar 0',
           'beginFormalParameter int MemberKind.GeneralizedFunctionType',
           'handleIdentifier int typeReference',
           'handleNoTypeArguments x',
-          'handleType int x',
+          'handleType int',
           'handleIdentifier x formalParameterDeclaration',
           'handleFormalParameterWithoutValue )',
           'endFormalParameter null null x FormalParameterKind.mandatory '
               'MemberKind.GeneralizedFunctionType',
           'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
-          'endFunctionType Function Function',
+          'endFunctionType Function',
           'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
           'beginMetadataStar int',
           'endMetadataStar 0',
           'beginFormalParameter int MemberKind.GeneralizedFunctionType',
           'handleIdentifier int typeReference',
           'handleNoTypeArguments x',
-          'handleType int x',
+          'handleType int',
           'handleIdentifier x formalParameterDeclaration',
           'handleFormalParameterWithoutValue )',
           'endFormalParameter null null x FormalParameterKind.mandatory '
               'MemberKind.GeneralizedFunctionType',
           'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
-          'endFunctionType Function ',
+          'endFunctionType Function',
         ]);
   }
 
   void test_computeType_void() {
-    expectInfo(voidType, 'void');
-    expectInfo(voidType, 'void;');
-    expectInfo(voidType, 'void(');
-    expectInfo(voidType, 'void<');
-    expectInfo(voidType, 'void=');
-    expectInfo(voidType, 'void*');
-    expectInfo(voidType, 'void<T>');
-    expectInfo(voidType, 'void do');
-    expectInfo(voidType, 'void foo');
-    expectInfo(voidType, 'void get');
-    expectInfo(voidType, 'void set');
-    expectInfo(voidType, 'void operator');
-    expectInfo(voidType, 'void Function');
     expectComplexInfo('void Function(', // Scanner inserts synthetic ')'.
         required: true,
         expectedCalls: [
@@ -764,27 +940,20 @@
           'handleVoidKeyword void',
           'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
           'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-          'endFunctionType Function ',
+          'endFunctionType Function',
         ]);
   }
 
   void test_computeType_voidComplex() {
-    expectInfo(voidType, 'void Function()', required: false);
     expectComplexInfo('void Function()', required: true, expectedCalls: [
       'handleNoTypeVariables (',
       'beginFunctionType void',
       'handleVoidKeyword void',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function ',
+      'endFunctionType Function',
     ]);
 
-    expectInfo(voidType, 'void Function<T>()', required: false);
-    expectInfo(voidType, 'void Function(int)', required: false);
-    expectInfo(voidType, 'void Function<T>(int)', required: false);
-    expectInfo(voidType, 'void Function(int x)', required: false);
-    expectInfo(voidType, 'void Function<T>(int x)', required: false);
-
     expectComplexInfo('void Function<T>()', required: true);
     expectComplexInfo('void Function(int)', required: true);
     expectComplexInfo('void Function<T>(int)', required: true);
@@ -799,71 +968,167 @@
 }
 
 @reflectiveTest
-class TypeParamOrArgInfoTest {
-  void test_noTypeParamOrArg() {
-    final Token start = scanString('before after').tokens;
+class NoTypeParamOrArgTest {
+  void test_basic() {
+    expect(noTypeParamOrArg.isSimpleTypeArgument, isFalse);
 
+    final Token start = scanString('before after').tokens;
     expect(noTypeParamOrArg.skip(start), start);
+    validateTokens(start);
   }
 
-  void test_noTypeParamOrArg_parseArguments() {
+  void test_compute() {
+    expectTypeParamOrArg(noTypeParamOrArg, '');
+    expectTypeParamOrArg(noTypeParamOrArg, 'a');
+    expectTypeParamOrArg(noTypeParamOrArg, 'a b');
+    expectTypeParamOrArg(noTypeParamOrArg, '<');
+    expectTypeParamOrArg(noTypeParamOrArg, '< b');
+    expectTypeParamOrArg(noTypeParamOrArg, '< 3 >');
+    expectTypeParamOrArg(noTypeParamOrArg, '< (');
+    expectTypeParamOrArg(noTypeParamOrArg, '< (', inDeclaration: true);
+  }
+
+  void test_parseArguments() {
     final Token start = scanString('before after').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
     expect(noTypeParamOrArg.parseArguments(start, new Parser(listener)), start);
+    validateTokens(start);
     expect(listener.calls, ['handleNoTypeArguments after']);
     expect(listener.errors, isNull);
   }
 
-  void test_noTypeParamOrArg_parseVariables() {
+  void test_parseVariables() {
     final Token start = scanString('before after').tokens;
     final TypeInfoListener listener = new TypeInfoListener();
 
     expect(noTypeParamOrArg.parseVariables(start, new Parser(listener)), start);
+    validateTokens(start);
     expect(listener.calls, ['handleNoTypeVariables after']);
     expect(listener.errors, isNull);
   }
+}
 
-  void test_simple_skip() {
+@reflectiveTest
+class SimpleTypeParamOrArgTest {
+  void test_basic_gt() {
+    expect(simpleTypeArgument1.isSimpleTypeArgument, isTrue);
+    expect(simpleTypeArgument1.typeInfo, simpleTypeWith1Argument);
+
     final Token start = scanString('before <T> after').tokens;
     final Token gt = start.next.next.next;
     expect(gt.lexeme, '>');
 
-    expect(simpleTypeArgument1.skip(start), gt);
+    Token skip = simpleTypeArgument1.skip(start);
+    validateTokens(start);
+    expect(skip, gt);
   }
 
-  void test_simple_skip2() {
-    final Token start = scanString('before <S<T>> after').tokens.next.next;
+  void test_basic_gt_eq() {
+    expect(simpleTypeArgument1GtEq.isSimpleTypeArgument, isTrue);
+    expect(simpleTypeArgument1GtEq.typeInfo, simpleTypeWith1ArgumentGtEq);
+
+    final Token start = scanString('before <T>= after').tokens;
     Token t = start.next.next;
-    expect(t.next.lexeme, '>>');
+    expect(t.next.lexeme, '>=');
 
-    expect(simpleTypeArgument1.skip(start), t);
+    Token skip = simpleTypeArgument1GtEq.skip(start);
+    validateTokens(start);
+    expect(skip.lexeme, '>');
+    expect(skip.next.lexeme, '=');
+    expect(skip.next.next, t.next.next);
   }
 
-  void test_simple_parseArguments() {
-    final Token start = scanString('before <T> after').tokens;
-    final Token gt = start.next.next.next;
-    expect(gt.lexeme, '>');
+  void test_basic_gt_gt() {
+    expect(simpleTypeArgument1GtGt.isSimpleTypeArgument, isTrue);
+    expect(simpleTypeArgument1GtGt.typeInfo, simpleTypeWith1ArgumentGtGt);
+
+    final Token start = scanString('before <S<T>> after').tokens.next.next;
+    var gtgt = start.next.next.next;
+    expect(gtgt.lexeme, '>>');
+    Token after = gtgt.next;
+    expect(after.lexeme, 'after');
+
+    Token skip = simpleTypeArgument1GtGt.skip(start);
+    validateTokens(start);
+    expect(skip.lexeme, '>');
+    expect(skip.next.lexeme, '>');
+    expect(skip.next.next, after);
+  }
+
+  void test_compute_gt() {
+    expectTypeParamOrArg(simpleTypeArgument1, '<T>');
+  }
+
+  void test_compute_gt_eq() {
+    expectTypeParamOrArg(simpleTypeArgument1GtEq, '<T>=');
+  }
+
+  void test_compute_gt_gt() {
+    String source = '<C<T>>';
+    Token start = scan(source).next.next;
+    expect(start.lexeme, 'C');
+    Token gtgt = start.next.next.next;
+    expect(gtgt.lexeme, '>>');
+
+    expect(computeTypeParamOrArg(start, false), simpleTypeArgument1GtGt);
+    validateTokens(start);
+  }
+
+  void testParseArguments(TypeParamOrArgInfo typeArg, String source,
+      [String next]) {
+    final Token start = scanString('before $source after').tokens;
+    final Token after = start.next.next.next.next;
+    expect(after.lexeme, 'after');
     final TypeInfoListener listener = new TypeInfoListener();
 
-    expect(simpleTypeArgument1.parseArguments(start, new Parser(listener)), gt);
+    var token = typeArg.parseArguments(start, new Parser(listener));
+    validateTokens(start);
+    expect(token.lexeme, '>');
+    token = token.next;
+    if (next != null) {
+      expect(token.lexeme, next);
+      token = token.next;
+    }
+    expect(token, after);
     expect(listener.calls, [
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >'
     ]);
     expect(listener.errors, isNull);
   }
 
-  void test_simple_parseVariables() {
-    final Token start = scanString('before <T> after').tokens;
-    final Token gt = start.next.next.next;
-    expect(gt.lexeme, '>');
+  void test_parseArguments_gt() {
+    testParseArguments(simpleTypeArgument1, '<T>');
+  }
+
+  void test_parseArguments_gt_eq() {
+    testParseArguments(simpleTypeArgument1GtEq, '<T>=', '=');
+  }
+
+  void test_parseArguments_gt_gt() {
+    testParseArguments(simpleTypeArgument1GtGt, '<T>>', '>');
+  }
+
+  void testParseVariables(TypeParamOrArgInfo typeParam, String source,
+      [String next]) {
+    final Token start = scanString('before $source after').tokens;
+    final Token after = start.next.next.next.next;
+    expect(after.lexeme, 'after');
     final TypeInfoListener listener = new TypeInfoListener();
 
-    expect(simpleTypeArgument1.parseVariables(start, new Parser(listener)), gt);
+    Token token = typeParam.parseVariables(start, new Parser(listener));
+    validateTokens(start);
+    expect(token.lexeme, '>');
+    token = token.next;
+    if (next != null) {
+      expect(token.lexeme, next);
+      token = token.next;
+    }
+    expect(token, after);
     expect(listener.calls, [
       'beginTypeVariables <',
       'beginMetadataStar T',
@@ -878,39 +1143,50 @@
     expect(listener.errors, isNull);
   }
 
-  void test_computeTypeParamOrArg_basic() {
-    expectTypeParamOrArg(noTypeParamOrArg, '');
-    expectTypeParamOrArg(noTypeParamOrArg, 'a');
-    expectTypeParamOrArg(noTypeParamOrArg, 'a b');
-    expectTypeParamOrArg(noTypeParamOrArg, '<');
-    expectTypeParamOrArg(noTypeParamOrArg, '< b');
-    expectTypeParamOrArg(noTypeParamOrArg, '< 3 >');
+  void test_parseVariables_gt() {
+    testParseVariables(simpleTypeArgument1, '<T>');
   }
 
-  void test_computeTypeParamOrArg_simple() {
-    expectTypeParamOrArg(simpleTypeArgument1, '<T>');
+  void test_parseVariables_gt_eq() {
+    testParseVariables(simpleTypeArgument1GtEq, '<T>=', '=');
   }
 
-  void test_computeTypeParamOrArg_simple_nested() {
-    String source = '<C<T>>';
-    Token start = scan(source).next.next;
-    expect(start.lexeme, 'C');
-    Token gtgt = start.next.next.next;
-    expect(gtgt.lexeme, '>>');
-
-    TypeParamOrArgInfo typeVarInfo = computeTypeParamOrArg(start, false, gtgt);
-    expect(typeVarInfo, simpleTypeArgument1, reason: source);
+  void test_parseVariables_gt_gt() {
+    testParseVariables(simpleTypeArgument1GtGt, '<T>>', '>');
   }
+}
 
+@reflectiveTest
+class TypeParamOrArgInfoTest {
   void test_computeTypeArg_complex() {
     expectComplexTypeArg('<S,T>', expectedCalls: [
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments ,',
-      'handleType S ,',
+      'handleType S',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
+      'endTypeArguments 2 < >'
+    ]);
+    expectComplexTypeArg('<S,T>=', expectedAfter: '=', expectedCalls: [
+      'beginTypeArguments <',
+      'handleIdentifier S typeReference',
+      'handleNoTypeArguments ,',
+      'handleType S',
+      'handleIdentifier T typeReference',
+      'handleNoTypeArguments >=',
+      'handleType T',
+      'endTypeArguments 2 < >'
+    ]);
+    expectComplexTypeArg('<S,T>>=', expectedAfter: '>=', expectedCalls: [
+      'beginTypeArguments <',
+      'handleIdentifier S typeReference',
+      'handleNoTypeArguments ,',
+      'handleType S',
+      'handleIdentifier T typeReference',
+      'handleNoTypeArguments >>=',
+      'handleType T',
       'endTypeArguments 2 < >'
     ]);
     expectComplexTypeArg('<S Function()>', expectedCalls: [
@@ -919,10 +1195,10 @@
       'beginFunctionType S',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments Function',
-      'handleType S Function',
+      'handleType S',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function >',
+      'endFunctionType Function',
       'endTypeArguments 1 < >'
     ]);
     expectComplexTypeArg('<void Function()>', expectedCalls: [
@@ -932,7 +1208,7 @@
       'handleVoidKeyword void',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function >',
+      'endFunctionType Function',
       'endTypeArguments 1 < >'
     ]);
     expectComplexTypeArg('<S<T>>', expectedCalls: [
@@ -941,9 +1217,20 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType S >',
+      'handleType S',
+      'endTypeArguments 1 < >'
+    ]);
+    expectComplexTypeArg('<S<T>>=', expectedAfter: '=', expectedCalls: [
+      'beginTypeArguments <',
+      'handleIdentifier S typeReference',
+      'beginTypeArguments <',
+      'handleIdentifier T typeReference',
+      'handleNoTypeArguments >>=',
+      'handleType T',
+      'endTypeArguments 1 < >',
+      'handleType S',
       'endTypeArguments 1 < >'
     ]);
     expectComplexTypeArg('<S<Function()>>', expectedCalls: [
@@ -955,11 +1242,27 @@
       'handleNoType <',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function >',
+      'endFunctionType Function',
       'endTypeArguments 1 < >',
-      'handleType S >',
+      'handleType S',
       'endTypeArguments 1 < >'
     ]);
+    expectComplexTypeArg('<S<Function()>>=',
+        expectedAfter: '=',
+        expectedCalls: [
+          'beginTypeArguments <',
+          'handleIdentifier S typeReference',
+          'beginTypeArguments <',
+          'handleNoTypeVariables (',
+          'beginFunctionType Function',
+          'handleNoType <',
+          'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
+          'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
+          'endFunctionType Function',
+          'endTypeArguments 1 < >',
+          'handleType S',
+          'endTypeArguments 1 < >'
+        ]);
     expectComplexTypeArg('<S<void Function()>>', expectedCalls: [
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
@@ -969,9 +1272,9 @@
       'handleVoidKeyword void', // was 'handleNoType <'
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function >',
+      'endFunctionType Function',
       'endTypeArguments 1 < >',
-      'handleType S >',
+      'handleType S',
       'endTypeArguments 1 < >'
     ]);
   }
@@ -983,7 +1286,7 @@
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments extends',
-      'handleType S extends',
+      'handleType S',
       'endTypeArguments 1 < >',
     ]);
     expectComplexTypeArg('<S extends List<T>>', expectedErrors: [
@@ -992,7 +1295,7 @@
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments extends',
-      'handleType S extends',
+      'handleType S',
       'endTypeArguments 1 < >',
     ]);
     expectComplexTypeArg('<@A S,T>', expectedErrors: [
@@ -1001,10 +1304,10 @@
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments ,',
-      'handleType S ,',
+      'handleType S',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 2 < >'
     ]);
     expectComplexTypeArg('<@A() S,T>', expectedErrors: [
@@ -1013,10 +1316,10 @@
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments ,',
-      'handleType S ,',
+      'handleType S',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 2 < >'
     ]);
     expectComplexTypeArg('<@A() @B S,T>', expectedErrors: [
@@ -1026,19 +1329,33 @@
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments ,',
-      'handleType S ,',
+      'handleType S',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 2 < >'
     ]);
     expectComplexTypeArg('<S T>',
         inDeclaration: true, expectedErrors: [error(codeExpectedButGot, 3, 1)]);
     expectComplexTypeArg('<S',
-        inDeclaration: true, expectedErrors: [error(codeExpectedButGot, 2, 0)]);
+        inDeclaration: true,
+        expectedErrors: [error(codeExpectedAfterButGot, 1, 1)]);
     expectComplexTypeArg('<@Foo S', inDeclaration: true, expectedErrors: [
       error(codeUnexpectedToken, 1, 1),
-      error(codeExpectedButGot, 7, 0)
+      error(codeExpectedAfterButGot, 6, 1)
+    ]);
+    expectComplexTypeArg('<S<T', inDeclaration: true, expectedErrors: [
+      error(codeExpectedAfterButGot, 3, 1)
+    ], expectedCalls: [
+      'beginTypeArguments <',
+      'handleIdentifier S typeReference',
+      'beginTypeArguments <',
+      'handleIdentifier T typeReference',
+      'handleNoTypeArguments ',
+      'handleType T',
+      'endTypeArguments 1 < >',
+      'handleType S',
+      'endTypeArguments 1 < >'
     ]);
   }
 
@@ -1069,7 +1386,7 @@
       'handleTypeVariablesDefined T 1',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeVariable > 0 extends',
       'endTypeVariables < >',
     ]);
@@ -1082,7 +1399,7 @@
       'handleTypeVariablesDefined T 1',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeVariable > 0 super',
       'endTypeVariables < >',
     ]);
@@ -1097,9 +1414,9 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType List >',
+      'handleType List',
       'endTypeVariable > 0 extends',
       'endTypeVariables < >',
     ]);
@@ -1119,7 +1436,7 @@
       'handleVoidKeyword void',
       'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
       'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function >',
+      'endFunctionType Function',
       'endTypeVariable > 1 extends',
       'handleNoType R',
       'endTypeVariable , 0 null',
@@ -1245,10 +1562,36 @@
       error(codeExpectedButGot, 3, 1),
     ]);
     expectComplexTypeParam('<S', inDeclaration: true, expectedErrors: [
-      error(codeExpectedButGot, 2, 0),
+      error(codeExpectedAfterButGot, 1, 1),
     ]);
     expectComplexTypeParam('<@Foo S',
-        inDeclaration: true, expectedErrors: [error(codeExpectedButGot, 7, 0)]);
+        inDeclaration: true,
+        expectedErrors: [error(codeExpectedAfterButGot, 6, 1)]);
+    expectComplexTypeParam('<@Foo }',
+        inDeclaration: true,
+        expectedAfter: '}',
+        expectedErrors: [error(codeExpectedIdentifier, 6, 1)]);
+    expectComplexTypeParam('<S extends List<T fieldName;',
+        inDeclaration: true,
+        expectedErrors: [error(codeExpectedAfterButGot, 16, 1)],
+        expectedAfter: 'fieldName',
+        expectedCalls: [
+          'beginTypeVariables <',
+          'beginMetadataStar S',
+          'endMetadataStar 0',
+          'handleIdentifier S typeVariableDeclaration',
+          'beginTypeVariable S',
+          'handleTypeVariablesDefined > 1',
+          'handleIdentifier List typeReference',
+          'beginTypeArguments <',
+          'handleIdentifier T typeReference',
+          'handleNoTypeArguments fieldName',
+          'handleType T',
+          'endTypeArguments 1 < >',
+          'handleType List',
+          'endTypeVariable fieldName 0 extends',
+          'endTypeVariables < >',
+        ]);
   }
 
   void test_computeTypeParam_31846() {
@@ -1263,9 +1606,9 @@
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType Comparable >',
+      'handleType Comparable',
       'endTypeVariable > 0 extends',
       'endTypeVariables < >',
     ]);
@@ -1286,9 +1629,9 @@
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
       'handleNoTypeArguments >',
-      'handleType S >',
+      'handleType S',
       'endTypeArguments 1 < >',
-      'handleType Comparable ,',
+      'handleType Comparable',
       'endTypeVariable , 0 extends',
       'endTypeVariables < >'
     ]);
@@ -1308,12 +1651,12 @@
       'beginFormalParameter T MemberKind.GeneralizedFunctionType',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments )',
-      'handleType T )',
+      'handleType T',
       'handleNoName )',
       'handleFormalParameterWithoutValue )',
       'endFormalParameter null null ) FormalParameterKind.mandatory MemberKind.GeneralizedFunctionType',
       'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
-      'endFunctionType Function >',
+      'endFunctionType Function',
       'endTypeVariable > 0 extends',
       'endTypeVariables < >'
     ]);
@@ -1323,18 +1666,18 @@
       'endMetadataStar 0',
       'handleIdentifier T typeVariableDeclaration',
       'beginTypeVariable T',
-      'handleTypeVariablesDefined >> 1',
+      'handleTypeVariablesDefined > 1',
       'handleIdentifier List typeReference',
       'beginTypeArguments <',
       'handleIdentifier List typeReference',
       'beginTypeArguments <',
       'handleIdentifier T typeReference',
       'handleNoTypeArguments >',
-      'handleType T >',
+      'handleType T',
       'endTypeArguments 1 < >',
-      'handleType List >',
+      'handleType List',
       'endTypeArguments 1 < >',
-      'handleType List >',
+      'handleType List',
       'endTypeVariable > 0 extends',
       'endTypeVariables < >'
     ]);
@@ -1370,14 +1713,7 @@
 void expectNestedInfo(expectedInfo, String source) {
   expect(source.startsWith('<'), isTrue);
   Token start = scan(source).next;
-  Token innerEndGroup = start;
-  while (!innerEndGroup.next.isEof) {
-    innerEndGroup = innerEndGroup.next;
-  }
-  if (!optional('>>', innerEndGroup)) {
-    innerEndGroup = null;
-  }
-  compute(expectedInfo, source, start, true, innerEndGroup: innerEndGroup);
+  compute(expectedInfo, source, start, true);
 }
 
 void expectNestedComplexInfo(String source) {
@@ -1385,10 +1721,9 @@
 }
 
 TypeInfo compute(expectedInfo, String source, Token start, bool required,
-    {bool inDeclaration = false, Token innerEndGroup}) {
+    {bool inDeclaration = false}) {
   int expectedGtGtAndNullEndCount = countGtGtAndNullEnd(start);
-  TypeInfo typeInfo =
-      computeType(start, required, inDeclaration, innerEndGroup);
+  TypeInfo typeInfo = computeType(start, required, inDeclaration);
   expect(typeInfo, expectedInfo, reason: source);
   expect(countGtGtAndNullEnd(start), expectedGtGtAndNullEndCount,
       reason: 'computeType should not modify the token stream');
@@ -1439,6 +1774,7 @@
 
   expect(typeVarInfo.start, start.next, reason: source);
   expectEnd(expectedAfter, typeVarInfo.skip(start));
+  validateTokens(start);
   expect(countGtGtAndNullEnd(start), expectedGtGtAndNullEndCount,
       reason: 'TypeParamOrArgInfo.skipType'
           ' should not modify the token stream');
@@ -1446,6 +1782,7 @@
   TypeInfoListener listener = new TypeInfoListener();
   Parser parser = new Parser(listener);
   Token actualEnd = typeVarInfo.parseArguments(start, parser);
+  validateTokens(start);
   expectEnd(expectedAfter, actualEnd);
 
   if (expectedCalls != null) {
@@ -1469,6 +1806,7 @@
 
   expect(typeVarInfo.start, start.next, reason: source);
   expectEnd(expectedAfter, typeVarInfo.skip(start));
+  validateTokens(start);
   expect(countGtGtAndNullEnd(start), expectedGtGtAndNullEndCount,
       reason: 'TypeParamOrArgInfo.skipType'
           ' should not modify the token stream');
@@ -1476,6 +1814,7 @@
   TypeInfoListener listener = new TypeInfoListener(metadataAllowed: true);
   Parser parser = new Parser(listener);
   Token actualEnd = typeVarInfo.parseVariables(start, parser);
+  validateTokens(start);
   expectEnd(expectedAfter, actualEnd);
 
   if (expectedCalls != null) {
@@ -1497,6 +1836,7 @@
     expectedInfo, String source, Token start, bool inDeclaration) {
   int expectedGtGtAndNullEndCount = countGtGtAndNullEnd(start);
   TypeParamOrArgInfo typeVarInfo = computeTypeParamOrArg(start, inDeclaration);
+  validateTokens(start);
   expect(typeVarInfo, expectedInfo, reason: source);
   expect(countGtGtAndNullEnd(start), expectedGtGtAndNullEndCount,
       reason: 'computeTypeParamOrArg should not modify the token stream');
@@ -1532,6 +1872,24 @@
   return count;
 }
 
+void validateTokens(Token token) {
+  int count = 0;
+  if (token.isEof && !token.next.isEof) {
+    token = token.next;
+  }
+  while (!token.isEof) {
+    Token next = token.next;
+    expect(token.charOffset, lessThanOrEqualTo(next.charOffset));
+    expect(next.previous, token);
+    if (next is SyntheticToken) {
+      expect(next.beforeSynthetic, token);
+    }
+    expect(count, lessThanOrEqualTo(10000));
+    token = next;
+    ++count;
+  }
+}
+
 class TypeInfoListener implements Listener {
   final bool metadataAllowed;
   List<String> calls = <String>[];
@@ -1616,8 +1974,8 @@
   }
 
   @override
-  void endFunctionType(Token functionToken, Token endToken) {
-    calls.add('endFunctionType $functionToken $endToken');
+  void endFunctionType(Token functionToken) {
+    calls.add('endFunctionType $functionToken');
   }
 
   @override
@@ -1702,8 +2060,8 @@
   }
 
   @override
-  void handleType(Token beginToken, Token endToken) {
-    calls.add('handleType $beginToken $endToken');
+  void handleType(Token beginToken) {
+    calls.add('handleType $beginToken');
   }
 
   @override
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index 23d0dba..b23f998 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -64,12 +64,12 @@
 
 import 'package:kernel/target/targets.dart' show TargetFlags;
 
-import 'package:kernel/target/vm.dart' show VmTarget;
-
 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
 
 import 'package:kernel/core_types.dart' show CoreTypes;
 
+import 'package:vm/target/vm.dart' show VmTarget;
+
 export 'package:testing/testing.dart' show Chain, runMe;
 
 const String STRONG_MODE = " strong mode ";
diff --git a/pkg/front_end/test/incremental_load_from_dill_test.dart b/pkg/front_end/test/incremental_load_from_dill_test.dart
index 2d2e2b7..70f828e 100644
--- a/pkg/front_end/test/incremental_load_from_dill_test.dart
+++ b/pkg/front_end/test/incremental_load_from_dill_test.dart
@@ -33,9 +33,13 @@
 
 import 'package:kernel/kernel.dart' show Component;
 
+import 'package:kernel/target/targets.dart' show TargetFlags;
+
 import "package:testing/testing.dart"
     show Chain, ChainContext, Result, Step, TestDescription, runMe;
 
+import "package:vm/target/vm.dart" show VmTarget;
+
 import "package:yaml/yaml.dart" show YamlList, YamlMap, loadYamlNode;
 
 import "incremental_utils.dart" as util;
@@ -353,6 +357,7 @@
   final Uri sdkRoot = computePlatformBinariesLocation();
   CompilerOptions options = new CompilerOptions()
     ..sdkRoot = sdkRoot
+    ..target = new VmTarget(new TargetFlags(strongMode: strong))
     ..librariesSpecificationUri = Uri.base.resolve("sdk/lib/libraries.json")
     ..onProblem = (FormattedMessage problem, Severity severity,
         List<FormattedMessage> context) {
diff --git a/pkg/front_end/test/src/base/processed_options_test.dart b/pkg/front_end/test/src/base/processed_options_test.dart
index 0cb398a..bf575e6 100644
--- a/pkg/front_end/test/src/base/processed_options_test.dart
+++ b/pkg/front_end/test/src/base/processed_options_test.dart
@@ -112,7 +112,7 @@
         .writeAsStringSync('');
     fileSystem
         .entityForUri(Uri.parse('org-dartlang-test:///libraries.json'))
-        .writeAsStringSync('{"vm":{"libraries":{"foo":{"uri":"bar.dart"}}}}');
+        .writeAsStringSync('{"none":{"libraries":{"foo":{"uri":"bar.dart"}}}}');
     var raw = new CompilerOptions()
       ..packagesFileUri = Uri.parse('org-dartlang-test:///.packages')
       ..fileSystem = fileSystem
@@ -131,7 +131,7 @@
     fileSystem
         .entityForUri(
             Uri.parse('org-dartlang-test:///mysdk/lib/libraries.json'))
-        .writeAsStringSync('{"vm":{"libraries":{"foo":{"uri":"bar.dart"}}}}');
+        .writeAsStringSync('{"none":{"libraries":{"foo":{"uri":"bar.dart"}}}}');
     var raw = new CompilerOptions()
       ..fileSystem = fileSystem
       ..packagesFileUri = Uri.parse('org-dartlang-test:///.packages')
@@ -150,7 +150,7 @@
     fileSystem
         .entityForUri(
             Uri.parse('org-dartlang-test:///mysdk/lib/libraries.json'))
-        .writeAsStringSync('{"vm":{"libraries":{"foo":{"uri":"bar.dart"}}}}');
+        .writeAsStringSync('{"none":{"libraries":{"foo":{"uri":"bar.dart"}}}}');
     var raw = new CompilerOptions()
       ..fileSystem = fileSystem
       ..packagesFileUri = Uri.parse('org-dartlang-test:///.packages')
diff --git a/pkg/front_end/test/summary_generator_test.dart b/pkg/front_end/test/summary_generator_test.dart
index e705c97..a74d5e2 100644
--- a/pkg/front_end/test/summary_generator_test.dart
+++ b/pkg/front_end/test/summary_generator_test.dart
@@ -52,7 +52,7 @@
 
   test('non-sdk dependencies are marked external', () async {
     var summaryA = await summarize(['a.dart'], allSources);
-    var sourcesWithA = new Map.from(allSources);
+    var sourcesWithA = new Map<String, dynamic>.from(allSources);
     sourcesWithA['a.dill'] = summaryA;
     var summaryB =
         await summarize(['b.dart'], sourcesWithA, inputSummaries: ['a.dill']);
@@ -66,13 +66,13 @@
 
   test('dependencies can be combined without conflict', () async {
     var summaryA = await summarize(['a.dart'], allSources);
-    var sourcesWithA = new Map.from(allSources);
+    var sourcesWithA = new Map<String, dynamic>.from(allSources);
     sourcesWithA['a.dill'] = summaryA;
 
     var summaryBC = await summarize(['b.dart', 'c.dart'], sourcesWithA,
         inputSummaries: ['a.dill']);
 
-    var sourcesWithABC = new Map.from(sourcesWithA);
+    var sourcesWithABC = new Map<String, dynamic>.from(sourcesWithA);
     sourcesWithABC['bc.dill'] = summaryBC;
 
     // Note: a is loaded first, bc.dill have a.dart as an external reference so
@@ -85,13 +85,13 @@
 
   test('dependencies can be combined in any order', () async {
     var summaryA = await summarize(['a.dart'], allSources);
-    var sourcesWithA = new Map.from(allSources);
+    var sourcesWithA = new Map<String, dynamic>.from(allSources);
     sourcesWithA['a.dill'] = summaryA;
 
     var summaryBC = await summarize(['b.dart', 'c.dart'], sourcesWithA,
         inputSummaries: ['a.dill']);
 
-    var sourcesWithABC = new Map.from(sourcesWithA);
+    var sourcesWithABC = new Map<String, dynamic>.from(sourcesWithA);
     sourcesWithABC['bc.dill'] = summaryBC;
 
     // Note: unlinke the previous test now bc.dill is loaded first and contains
@@ -111,7 +111,7 @@
     expect(
         component.libraries.single.importUri.path.endsWith('a.dart'), isTrue);
 
-    var sourcesWithA = new Map.from(allSources);
+    var sourcesWithA = new Map<String, dynamic>.from(allSources);
     sourcesWithA['a.dill'] = summaryA;
     var summaryB = await summarize(['b.dart'], sourcesWithA,
         inputSummaries: ['a.dill'], truncate: true);
@@ -131,7 +131,7 @@
   // TODO(sigmund): test trimDependencies when it is part of the public API.
 }
 
-var allSources = {
+var allSources = <String, String>{
   'a.dart': 'class A { foo() { print("hi"); } }',
   'b.dart': 'import "a.dart"; class B extends A {}',
   'c.dart': 'class C { bar() => 1; }',
diff --git a/pkg/front_end/test/tool/reload.dart b/pkg/front_end/test/tool/reload.dart
index 275c9d1..31e10a1 100644
--- a/pkg/front_end/test/tool/reload.dart
+++ b/pkg/front_end/test/tool/reload.dart
@@ -17,7 +17,6 @@
 
 import 'dart:async';
 import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
-import 'package:stream_channel/stream_channel.dart';
 import 'package:web_socket_channel/io.dart';
 
 /// APIs to communicate with a remote VM via the VM's service protocol.
@@ -42,9 +41,8 @@
 
   /// Establishes the JSON rpc connection.
   json_rpc.Peer _createPeer() {
-    StreamChannel socket =
-        new IOWebSocketChannel.connect('ws://127.0.0.1:$port/ws');
-    var peer = new json_rpc.Peer(socket);
+    var socket = new IOWebSocketChannel.connect('ws://127.0.0.1:$port/ws');
+    var peer = new json_rpc.Peer(socket.cast<String>());
     peer.listen().then((_) {
       if (VERBOSE_DEBUG) print('connection to vm-service closed');
       return disconnect();
diff --git a/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect
index f7f9eda..eac7e10 100644
--- a/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_nonshown_ctor.expression.yaml.expect
@@ -1,6 +1,6 @@
 Errors: {
   Method not found: 'Directory'. (@4)
-  Too many positional arguments: 0 allowed, 1 given. (@0)
+  Too many positional arguments: 0 allowed, but 1 found. (@13)
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return throw new dart.core::NoSuchMethodError::withInvocation(null, new dart.core::_InvocationMirror::_withType(#Directory, 32, const <dart.core::Type>[], dart.core::List::unmodifiable<dynamic>(<dynamic>["test"]), dart.core::Map::unmodifiable<dart.core::Symbol, dynamic>(const <dart.core::Symbol, dynamic>{})));
diff --git a/pkg/front_end/testcases/external_import.dart.direct.expect b/pkg/front_end/testcases/external_import.dart.direct.expect
index b262abf..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.direct.expect
+++ b/pkg/front_end/testcases/external_import.dart.direct.expect
@@ -1,6 +1,6 @@
-@dart._internal::ExternalName::•("org-dartlang-testcase:///here")
-@dart._internal::ExternalName::•("org-dartlang-testcase:///there")
-@dart._internal::ExternalName::•("file:///usr/local/somewhere")
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.direct.transformed.expect b/pkg/front_end/testcases/external_import.dart.direct.transformed.expect
index b262abf..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/external_import.dart.direct.transformed.expect
@@ -1,6 +1,6 @@
-@dart._internal::ExternalName::•("org-dartlang-testcase:///here")
-@dart._internal::ExternalName::•("org-dartlang-testcase:///there")
-@dart._internal::ExternalName::•("file:///usr/local/somewhere")
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.outline.expect b/pkg/front_end/testcases/external_import.dart.outline.expect
index b446720..b0af5d4 100644
--- a/pkg/front_end/testcases/external_import.dart.outline.expect
+++ b/pkg/front_end/testcases/external_import.dart.outline.expect
@@ -1,6 +1,6 @@
-@dart._internal::ExternalName::•("org-dartlang-testcase:///here")
-@dart._internal::ExternalName::•("org-dartlang-testcase:///there")
-@dart._internal::ExternalName::•("file:///usr/local/somewhere")
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.strong.expect b/pkg/front_end/testcases/external_import.dart.strong.expect
index b262abf..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.strong.expect
+++ b/pkg/front_end/testcases/external_import.dart.strong.expect
@@ -1,6 +1,6 @@
-@dart._internal::ExternalName::•("org-dartlang-testcase:///here")
-@dart._internal::ExternalName::•("org-dartlang-testcase:///there")
-@dart._internal::ExternalName::•("file:///usr/local/somewhere")
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/external_import.dart.strong.transformed.expect b/pkg/front_end/testcases/external_import.dart.strong.transformed.expect
index b262abf..2776224 100644
--- a/pkg/front_end/testcases/external_import.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/external_import.dart.strong.transformed.expect
@@ -1,6 +1,6 @@
-@dart._internal::ExternalName::•("org-dartlang-testcase:///here")
-@dart._internal::ExternalName::•("org-dartlang-testcase:///there")
-@dart._internal::ExternalName::•("file:///usr/local/somewhere")
+@dart._internal::ExternalName::•("dart-ext:here")
+@dart._internal::ExternalName::•("dart-ext:foo/../there")
+@dart._internal::ExternalName::•("dart-ext:/usr/local/somewhere")
 library;
 import self as self;
 import "dart:_internal" as _in;
diff --git a/pkg/front_end/testcases/rasta/super.dart.strong.expect b/pkg/front_end/testcases/rasta/super.dart.strong.expect
index d4f9d08..e165ea3 100644
--- a/pkg/front_end/testcases/rasta/super.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.strong.expect
@@ -222,21 +222,25 @@
 //     use(super.m -= 42);
 //               ^
 //
-// pkg/front_end/testcases/rasta/super.dart:147:11: Error: Too many positional arguments: 0 allowed, 1 given.
+// pkg/front_end/testcases/rasta/super.dart:147:12: Error: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
 //     super.m(87);
-//           ^
+//            ^^^^
 //
-// pkg/front_end/testcases/rasta/super.dart:148:15: Error: Too many positional arguments: 0 allowed, 1 given.
+// pkg/front_end/testcases/rasta/super.dart:148:16: Error: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
 //     use(super.m(87));
-//               ^
+//                ^^^^
 //
-// pkg/front_end/testcases/rasta/super.dart:149:11: Error: Too many positional arguments: 0 allowed, 1 given.
+// pkg/front_end/testcases/rasta/super.dart:149:12: Error: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
 //     super.n(87);
-//           ^
+//            ^^^^
 //
-// pkg/front_end/testcases/rasta/super.dart:150:15: Error: Too many positional arguments: 0 allowed, 1 given.
+// pkg/front_end/testcases/rasta/super.dart:150:16: Error: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
 //     use(super.n(87));
-//               ^
+//                ^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.direct.expect b/pkg/front_end/testcases/regress/issue_31155.dart.direct.expect
index 0f54478..d785e40 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.direct.expect
@@ -21,19 +21,6 @@
 // pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
 //   var f = Map<A, B> {};
 //                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: A function expression can't have a name.
-//   var f = Map<A, B> {};
-//           ^^^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   var f = Map<A, B> {};
-//              ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: Expected a function body, but got '<'.
-//   var f = Map<A, B> {};
-//              ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_31155.dart.direct.transformed.expect
index 0f54478..d785e40 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.direct.transformed.expect
@@ -21,19 +21,6 @@
 // pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
 //   var f = Map<A, B> {};
 //                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: A function expression can't have a name.
-//   var f = Map<A, B> {};
-//           ^^^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   var f = Map<A, B> {};
-//              ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: Expected a function body, but got '<'.
-//   var f = Map<A, B> {};
-//              ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
index f805c54..3b1594e 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
@@ -21,19 +21,6 @@
 // pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
 //   var f = Map<A, B> {};
 //                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: A function expression can't have a name.
-//   var f = Map<A, B> {};
-//           ^^^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   var f = Map<A, B> {};
-//              ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: Expected a function body, but got '<'.
-//   var f = Map<A, B> {};
-//              ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
index e7de89b..868d241 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.transformed.expect
@@ -21,19 +21,6 @@
 // pkg/front_end/testcases/regress/issue_31155.dart:11:23: Error: Expected a class member, but got ';'.
 //   var f = Map<A, B> {};
 //                       ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:11: Error: A function expression can't have a name.
-//   var f = Map<A, B> {};
-//           ^^^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: A function declaration needs an explicit list of parameters.
-// Try adding a parameter list to the function declaration.
-//   var f = Map<A, B> {};
-//              ^
-//
-// pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: Expected a function body, but got '<'.
-//   var f = Map<A, B> {};
-//              ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
index 33b03d6..c8a8ea6 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
@@ -1,12 +1,13 @@
 // Errors:
 //
-// pkg/front_end/testcases/regress/issue_31299.dart:18:7: Error: Too many positional arguments: 0 allowed, 2 given.
+// pkg/front_end/testcases/regress/issue_31299.dart:18:12: Error: Too many positional arguments: 0 allowed, but 2 found.
+// Try removing the extra positional arguments.
 //   new A.foo(1, 2);
-//       ^
+//            ^^^^^^
 //
-// pkg/front_end/testcases/regress/issue_31299.dart:15:11: Error: Too few positional arguments: 2 required, 0 given.
+// pkg/front_end/testcases/regress/issue_31299.dart:15:14: Error: Too few positional arguments: 2 required, 0 given.
 //   new A().foo();
-//           ^
+//              ^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
index b5aeddb..6509c64 100644
--- a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
+++ b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
@@ -200,13 +200,15 @@
 //     use(super.m -= 42);
 //               ^
 //
-// pkg/front_end/testcases/super_rasta_copy.dart:139:11: Error: Too many positional arguments: 0 allowed, 1 given.
+// pkg/front_end/testcases/super_rasta_copy.dart:139:12: Error: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
 //     super.m(87);
-//           ^
+//            ^^^^
 //
-// pkg/front_end/testcases/super_rasta_copy.dart:140:15: Error: Too many positional arguments: 0 allowed, 1 given.
+// pkg/front_end/testcases/super_rasta_copy.dart:140:16: Error: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
 //     use(super.m(87));
-//               ^
+//                ^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/tool/_fasta/additional_targets.dart b/pkg/front_end/tool/_fasta/additional_targets.dart
index dd9a0a3..9dd557e 100644
--- a/pkg/front_end/tool/_fasta/additional_targets.dart
+++ b/pkg/front_end/tool/_fasta/additional_targets.dart
@@ -8,9 +8,8 @@
 
 import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget;
 
-import 'package:vm/target/dart_runner.dart' show DartRunnerTarget;
-
-import 'package:vm/target/flutter_runner.dart' show FlutterRunnerTarget;
+import 'package:vm/target/install.dart' as vm_target_install
+    show installAdditionalTargets;
 
 void installAdditionalTargets() {
   // If you add new targets here, please also update FastaUsageLong in
@@ -19,7 +18,5 @@
       (TargetFlags flags) => new Dart2jsTarget("dart2js", flags);
   targets["dart2js_server"] =
       (TargetFlags flags) => new Dart2jsTarget("dart2js_server", flags);
-  targets["dart_runner"] = (TargetFlags flags) => new DartRunnerTarget(flags);
-  targets["flutter_runner"] =
-      (TargetFlags flags) => new FlutterRunnerTarget(flags);
+  vm_target_install.installAdditionalTargets();
 }
diff --git a/pkg/front_end/tool/_fasta/compile_platform_legacy_test.dart b/pkg/front_end/tool/_fasta/compile_platform_legacy_test.dart
index 4decb5d..2f00335 100644
--- a/pkg/front_end/tool/_fasta/compile_platform_legacy_test.dart
+++ b/pkg/front_end/tool/_fasta/compile_platform_legacy_test.dart
@@ -41,7 +41,7 @@
   });
 }
 
-withTemporaryDirectory(String prefix, Future f(Uri tmp)) async {
+withTemporaryDirectory(String prefix, Future<void> f(Uri tmp)) async {
   Directory tmp = await Directory.systemTemp.createTemp(prefix);
   try {
     await f(tmp.uri);
diff --git a/pkg/front_end/tool/_fasta/compile_platform_test.dart b/pkg/front_end/tool/_fasta/compile_platform_test.dart
index ac0ea114..d36b852 100644
--- a/pkg/front_end/tool/_fasta/compile_platform_test.dart
+++ b/pkg/front_end/tool/_fasta/compile_platform_test.dart
@@ -42,7 +42,7 @@
   });
 }
 
-withTemporaryDirectory(String prefix, Future f(Uri tmp)) async {
+withTemporaryDirectory(String prefix, Future<void> f(Uri tmp)) async {
   Directory tmp = await Directory.systemTemp.createTemp(prefix);
   try {
     await f(tmp.uri);
diff --git a/pkg/front_end/tool/fasta_perf.dart b/pkg/front_end/tool/fasta_perf.dart
index 39cb453..ea099cd 100644
--- a/pkg/front_end/tool/fasta_perf.dart
+++ b/pkg/front_end/tool/fasta_perf.dart
@@ -39,7 +39,7 @@
   var bench = options.rest[0];
   var entryUri = Uri.base.resolve(options.rest[1]);
 
-  await setup(entryUri);
+  await setup(entryUri, strongMode: strongMode);
 
   Map<Uri, List<int>> files = await scanReachableFiles(entryUri);
   var handlers = {
@@ -89,14 +89,15 @@
 
 /// Preliminary set up to be able to correctly resolve URIs on the given
 /// program.
-Future setup(Uri entryUri) async {
+Future setup(Uri entryUri, {bool strongMode: false}) async {
   var options = new CompilerOptions()
     ..sdkRoot = sdkRoot
     // Because this is only used to create a uriResolver, we don't allow any
     // whitelisting of error messages in the error handler.
     ..onError = onErrorHandler(false)
     ..compileSdk = true
-    ..packagesFileUri = Uri.base.resolve('.packages');
+    ..packagesFileUri = Uri.base.resolve('.packages')
+    ..target = createTarget(isFlutter: false, strongMode: strongMode);
   uriResolver = await new ProcessedOptions(options).getUriTranslator();
 }
 
diff --git a/pkg/front_end/tool/perf_common.dart b/pkg/front_end/tool/perf_common.dart
index c866f13..085e50b 100644
--- a/pkg/front_end/tool/perf_common.dart
+++ b/pkg/front_end/tool/perf_common.dart
@@ -7,11 +7,11 @@
 
 import 'dart:io' show exitCode, stderr;
 
-import 'package:kernel/target/flutter.dart' show FlutterTarget;
-
 import 'package:kernel/target/targets.dart' show Target, TargetFlags;
 
-import 'package:kernel/target/vm.dart' show VmTarget;
+import 'package:vm/target/flutter.dart' show FlutterTarget;
+
+import 'package:vm/target/vm.dart' show VmTarget;
 
 import 'package:front_end/src/api_prototype/front_end.dart'
     show CompilationMessage;
@@ -52,8 +52,8 @@
     if (m.severity == Severity.internalProblem ||
         m.severity == Severity.error) {
       if (!isStrong || !whitelistMessageCode.contains(m.code)) {
-        var uri = m.span.start.sourceUrl;
-        var offset = m.span.start.offset;
+        var uri = m.span?.start?.sourceUrl ?? "?";
+        var offset = m.span?.start?.offset ?? "?";
         stderr.writeln('$uri:$offset: '
             '${severityPrefixes[m.severity]}: ${m.message}');
         exitCode = 1;
@@ -140,7 +140,7 @@
       for (double duration in durations.skip(3)) {
         total += duration;
       }
-      print("$key took: ${total/(durations.length - 3)}ms");
+      print("$key took: ${total / (durations.length - 3)}ms");
     });
   }
 }
diff --git a/pkg/kernel/lib/target/targets.dart b/pkg/kernel/lib/target/targets.dart
index 76fb9ff..9604ad8 100644
--- a/pkg/kernel/lib/target/targets.dart
+++ b/pkg/kernel/lib/target/targets.dart
@@ -7,8 +7,6 @@
 import '../class_hierarchy.dart';
 import '../core_types.dart';
 import '../transformations/treeshaker.dart' show ProgramRoot;
-import 'flutter.dart' show FlutterTarget;
-import 'vm.dart' show VmTarget;
 
 final List<String> targetNames = targets.keys.toList();
 
@@ -33,8 +31,6 @@
 
 final Map<String, _TargetBuilder> targets = <String, _TargetBuilder>{
   'none': (TargetFlags flags) => new NoneTarget(flags),
-  'vm': (TargetFlags flags) => new VmTarget(flags),
-  'flutter': (TargetFlags flags) => new FlutterTarget(flags),
 };
 
 Target getTarget(String name, TargetFlags flags) {
diff --git a/pkg/kernel/lib/transformations/continuation.dart b/pkg/kernel/lib/transformations/continuation.dart
index e309ded..723c78d 100644
--- a/pkg/kernel/lib/transformations/continuation.dart
+++ b/pkg/kernel/lib/transformations/continuation.dart
@@ -85,6 +85,8 @@
         return new AsyncFunctionRewriter(helper, node, syncAsync).rewrite();
       case AsyncMarker.AsyncStar:
         return new AsyncStarFunctionRewriter(helper, node, syncAsync).rewrite();
+      default:
+        return null;
     }
   }
 }
diff --git a/pkg/kernel/lib/transformations/mixin_full_resolution.dart b/pkg/kernel/lib/transformations/mixin_full_resolution.dart
index d132d11..1214acd 100644
--- a/pkg/kernel/lib/transformations/mixin_full_resolution.dart
+++ b/pkg/kernel/lib/transformations/mixin_full_resolution.dart
@@ -348,7 +348,7 @@
       // Target not found at all, or call was illegal.
       return _callNoSuchMethod(node.name.name, visitedArguments, node,
           isSuper: true);
-    } else if (target != null) {
+    } else {
       return new MethodInvocation(
           new DirectPropertyGet(new ThisExpression(), target),
           new Name('call'),
diff --git a/pkg/kernel/test/self_check_util.dart b/pkg/kernel/test/self_check_util.dart
index bef59b0..1ebdd39 100644
--- a/pkg/kernel/test/self_check_util.dart
+++ b/pkg/kernel/test/self_check_util.dart
@@ -15,7 +15,7 @@
 ///
 /// The test can either be run with a single file passed on the command line
 /// or run in batch mode.
-runSelfCheck(List<String> args, Future runTest(String filename)) {
+runSelfCheck(List<String> args, void runTest(String filename)) {
   Future<CompilerOutcome> batchMain(List<String> arguments) async {
     if (arguments.length != 1) {
       throw 'Exactly one argument expected';
@@ -24,7 +24,7 @@
     if (!filename.endsWith('.dill')) {
       throw 'File does not have expected .dill extension: $filename';
     }
-    await runTest(filename);
+    runTest(filename);
     return CompilerOutcome.Ok;
   }
 
diff --git a/pkg/kernel/test/verify_test.dart b/pkg/kernel/test/verify_test.dart
index c08e7f7..5286c82 100644
--- a/pkg/kernel/test/verify_test.dart
+++ b/pkg/kernel/test/verify_test.dart
@@ -20,113 +20,115 @@
 /// compiling the Dart test suite with the verifier enabled.
 main() {
   positiveTest('Test harness has no errors', (TestHarness test) {
-    return new NullLiteral();
+    test.addNode(NullLiteral());
   });
   negativeTest('VariableGet out of scope',
       matches("Variable '$varRegexp' used out of scope\\."),
       (TestHarness test) {
-    return new VariableGet(test.makeVariable());
+    test.addNode(VariableGet(test.makeVariable()));
   });
   negativeTest('VariableSet out of scope',
       matches("Variable '$varRegexp' used out of scope\\."),
       (TestHarness test) {
-    return new VariableSet(test.makeVariable(), new NullLiteral());
+    test.addNode(VariableSet(test.makeVariable(), new NullLiteral()));
   });
   negativeTest('Variable block scope',
       matches("Variable '$varRegexp' used out of scope\\."),
       (TestHarness test) {
     VariableDeclaration variable = test.makeVariable();
-    return new Block([
+    test.addNode(Block([
       new Block([variable]),
       new ReturnStatement(new VariableGet(variable))
-    ]);
+    ]));
   });
   negativeTest('Variable let scope',
       matches("Variable '$varRegexp' used out of scope\\."),
       (TestHarness test) {
     VariableDeclaration variable = test.makeVariable();
-    return new LogicalExpression(new Let(variable, new VariableGet(variable)),
-        '&&', new VariableGet(variable));
+    test.addNode(LogicalExpression(new Let(variable, new VariableGet(variable)),
+        '&&', new VariableGet(variable)));
   });
   negativeTest('Variable redeclared',
       matches("Variable '$varRegexp' declared more than once\\."),
       (TestHarness test) {
     VariableDeclaration variable = test.makeVariable();
-    return new Block([variable, variable]);
+    test.addNode(Block([variable, variable]));
   });
   negativeTest('Member redeclared',
       "Member 'test_lib::Test::field' has been declared more than once.",
       (TestHarness test) {
     Field field = new Field(new Name('field'), initializer: new NullLiteral());
-    return new Class(
+    test.addNode(Class(
         name: 'Test',
         supertype: test.objectClass.asRawSupertype,
-        fields: [field, field]);
+        fields: [field, field]));
   });
   negativeTest('Class redeclared',
       "Class 'test_lib::OtherClass' declared more than once.",
       (TestHarness test) {
-    return test.otherClass; // Test harness also adds otherClass to component.
+    test.addNode(
+        test.otherClass); // Test harness also adds otherClass to component.
   });
   negativeTest('Class type parameter redeclared',
       matches("Type parameter 'test_lib::Test::$tvarRegexp' redeclared\\."),
       (TestHarness test) {
     var parameter = test.makeTypeParameter();
-    return new Class(
+    test.addNode(Class(
         name: 'Test',
         supertype: test.objectClass.asRawSupertype,
-        typeParameters: [parameter, parameter]);
+        typeParameters: [parameter, parameter]));
   });
   negativeTest('Member type parameter redeclared',
       matches("Type parameter '$tvarRegexp' redeclared\\."),
       (TestHarness test) {
     var parameter = test.makeTypeParameter();
-    return new Procedure(
+    test.addNode(Procedure(
         new Name('bar'),
         ProcedureKind.Method,
         new FunctionNode(new ReturnStatement(new NullLiteral()),
-            typeParameters: [parameter, parameter]));
+            typeParameters: [parameter, parameter])));
   });
   negativeTest(
       'Type parameter out of scope',
       matches("Type parameter '$tvarRegexp' referenced out of scope,"
           " parent is: 'null'\\."), (TestHarness test) {
     var parameter = test.makeTypeParameter();
-    return new ListLiteral([], typeArgument: new TypeParameterType(parameter));
+    test.addNode(
+        ListLiteral([], typeArgument: new TypeParameterType(parameter)));
   });
   negativeTest(
       'Class type parameter from another class',
       "Type parameter 'test_lib::OtherClass::OtherT' referenced out of scope,"
       " parent is: 'test_lib::OtherClass'.", (TestHarness test) {
-    return new TypeLiteral(
-        new TypeParameterType(test.otherClass.typeParameters[0]));
+    test.addNode(
+        TypeLiteral(new TypeParameterType(test.otherClass.typeParameters[0])));
   });
   negativeTest(
       'Class type parameter in static method',
       "Type parameter 'test_lib::TestClass::T' referenced from static context,"
       " parent is: 'test_lib::TestClass'.", (TestHarness test) {
-    return new Procedure(
+    test.addNode(Procedure(
         new Name('bar'),
         ProcedureKind.Method,
         new FunctionNode(new ReturnStatement(
             new TypeLiteral(new TypeParameterType(test.classTypeParameter)))),
-        isStatic: true);
+        isStatic: true));
   });
   negativeTest(
       'Class type parameter in static field',
       "Type parameter 'test_lib::TestClass::T' referenced from static context,"
       " parent is: 'test_lib::TestClass'.", (TestHarness test) {
-    return new Field(new Name('field'),
+    test.addNode(Field(new Name('field'),
         initializer:
             new TypeLiteral(new TypeParameterType(test.classTypeParameter)),
-        isStatic: true);
+        isStatic: true));
   });
   negativeTest(
       'Method type parameter out of scope',
       matches("Type parameter '$tvarRegexp' referenced out of scope,"
           " parent is: '<FunctionNode>'\\."), (TestHarness test) {
     var parameter = test.makeTypeParameter();
-    return new Class(
+    test.addNode(Class(
         name: 'Test',
         supertype: test.objectClass.asRawSupertype,
         procedures: [
@@ -140,33 +142,33 @@
               ProcedureKind.Method,
               new FunctionNode(new ReturnStatement(
                   new TypeLiteral(new TypeParameterType(parameter)))))
-        ]);
+        ]));
   });
   negativeTest(
       'Interface type arity too low',
       "Type test_lib::OtherClass provides 0 type arguments"
       " but the class declares 1 parameters.", (TestHarness test) {
-    return new TypeLiteral(new InterfaceType(test.otherClass, []));
+    test.addNode(TypeLiteral(new InterfaceType(test.otherClass, [])));
   });
   negativeTest(
       'Interface type arity too high',
       "Type test_lib::OtherClass<dynamic, dynamic> provides 2 type arguments"
       " but the class declares 1 parameters.", (TestHarness test) {
-    return new TypeLiteral(new InterfaceType(
-        test.otherClass, [new DynamicType(), new DynamicType()]));
+    test.addNode(TypeLiteral(new InterfaceType(
+        test.otherClass, [new DynamicType(), new DynamicType()])));
   });
   negativeTest(
       'Dangling interface type',
       matches("Dangling reference to 'null::#class[0-9]+',"
           " parent is: 'null'\\."), (TestHarness test) {
     var orphan = new Class();
-    return new TypeLiteral(new InterfaceType(orphan));
+    test.addNode(TypeLiteral(new InterfaceType(orphan)));
   });
   negativeTest('Dangling field get',
       "Dangling reference to 'null::foo', parent is: 'null'.",
       (TestHarness test) {
     var orphan = new Field(new Name('foo'));
-    return new DirectPropertyGet(new NullLiteral(), orphan);
+    test.addNode(DirectPropertyGet(new NullLiteral(), orphan));
   });
   negativeTest(
       'Missing block parent pointer',
@@ -174,7 +176,7 @@
       " expected 'Block', but found: 'Null'.", (TestHarness test) {
     var block = new Block([]);
     block.statements.add(new ReturnStatement());
-    return block;
+    test.addNode(block);
   });
   negativeTest(
       'Missing function parent pointer',
@@ -182,20 +184,20 @@
       " expected 'Procedure', but found: 'Null'.", (TestHarness test) {
     var procedure = new Procedure(new Name('bar'), ProcedureKind.Method, null);
     procedure.function = new FunctionNode(new EmptyStatement());
-    return procedure;
+    test.addNode(procedure);
   });
   negativeTest('StaticGet without target', "StaticGet without target.",
       (TestHarness test) {
-    return new StaticGet(null);
+    test.addNode(StaticGet(null));
   });
   negativeTest('StaticSet without target', "StaticSet without target.",
       (TestHarness test) {
-    return new StaticSet(null, new NullLiteral());
+    test.addNode(StaticSet(null, new NullLiteral()));
   });
   negativeTest(
       'StaticInvocation without target', "StaticInvocation without target.",
       (TestHarness test) {
-    return new StaticInvocation(null, new Arguments.empty());
+    test.addNode(StaticInvocation(null, new Arguments.empty()));
   });
   positiveTest('Correct StaticInvocation', (TestHarness test) {
     var method = new Procedure(
@@ -205,7 +207,7 @@
             positionalParameters: [new VariableDeclaration('p')]),
         isStatic: true);
     test.enclosingClass.addMember(method);
-    return new StaticInvocation(method, new Arguments([new NullLiteral()]));
+    test.addNode(StaticInvocation(method, new Arguments([new NullLiteral()])));
   });
   negativeTest(
       'StaticInvocation with too many parameters',
@@ -215,7 +217,7 @@
         new FunctionNode(new EmptyStatement()),
         isStatic: true);
     test.enclosingClass.addMember(method);
-    return new StaticInvocation(method, new Arguments([new NullLiteral()]));
+    test.addNode(StaticInvocation(method, new Arguments([new NullLiteral()])));
   });
   negativeTest(
       'StaticInvocation with too few parameters',
@@ -228,7 +230,7 @@
             positionalParameters: [new VariableDeclaration('p')]),
         isStatic: true);
     test.enclosingClass.addMember(method);
-    return new StaticInvocation(method, new Arguments.empty());
+    test.addNode(StaticInvocation(method, new Arguments.empty()));
   });
   negativeTest(
       'StaticInvocation with unmatched named parameter',
@@ -238,10 +240,10 @@
         new FunctionNode(new EmptyStatement()),
         isStatic: true);
     test.enclosingClass.addMember(method);
-    return new StaticInvocation(
+    test.addNode(StaticInvocation(
         method,
         new Arguments([],
-            named: [new NamedExpression('p', new NullLiteral())]));
+            named: [new NamedExpression('p', new NullLiteral())])));
   });
   negativeTest(
       'StaticInvocation with missing type argument',
@@ -254,7 +256,7 @@
             typeParameters: [test.makeTypeParameter()]),
         isStatic: true);
     test.enclosingClass.addMember(method);
-    return new StaticInvocation(method, new Arguments.empty());
+    test.addNode(StaticInvocation(method, new Arguments.empty()));
   });
   negativeTest(
       'ConstructorInvocation with missing type argument',
@@ -268,17 +270,17 @@
     var constructor = new Constructor(new FunctionNode(new EmptyStatement()),
         name: new Name('foo'));
     test.enclosingClass.addMember(constructor);
-    return new ConstructorInvocation(constructor, new Arguments.empty());
+    test.addNode(ConstructorInvocation(constructor, new Arguments.empty()));
   });
   positiveTest('Valid typedef Foo = `(C) => void`', (TestHarness test) {
     var typedef_ = new Typedef(
         'Foo', new FunctionType([test.otherClass.rawType], const VoidType()));
-    test.enclosingLibrary.addTypedef(typedef_);
+    test.addNode(typedef_);
   });
   positiveTest('Valid typedef Foo = C<dynamic>', (TestHarness test) {
     var typedef_ = new Typedef(
         'Foo', new InterfaceType(test.otherClass, [const DynamicType()]));
-    test.enclosingLibrary.addTypedef(typedef_);
+    test.addNode(typedef_);
   });
   positiveTest('Valid typedefs Foo = Bar, Bar = C', (TestHarness test) {
     var foo = new Typedef('Foo', null);
@@ -310,7 +312,7 @@
       " refers to itself", (TestHarness test) {
     var typedef_ = new Typedef('Foo', null);
     typedef_.type = new TypedefType(typedef_);
-    test.enclosingLibrary.addTypedef(typedef_);
+    test.addNode(typedef_);
   });
   negativeTest(
       'Invalid typedef Foo = `(Foo) => void`',
@@ -319,7 +321,7 @@
     var typedef_ = new Typedef('Foo', null);
     typedef_.type =
         new FunctionType([new TypedefType(typedef_)], const VoidType());
-    test.enclosingLibrary.addTypedef(typedef_);
+    test.addNode(typedef_);
   });
   negativeTest(
       'Invalid typedef Foo = `() => Foo`',
@@ -327,7 +329,7 @@
       " refers to itself", (TestHarness test) {
     var typedef_ = new Typedef('Foo', null);
     typedef_.type = new FunctionType([], new TypedefType(typedef_));
-    test.enclosingLibrary.addTypedef(typedef_);
+    test.addNode(typedef_);
   });
   negativeTest(
       'Invalid typedef Foo = C<Foo>',
@@ -336,7 +338,7 @@
     var typedef_ = new Typedef('Foo', null);
     typedef_.type =
         new InterfaceType(test.otherClass, [new TypedefType(typedef_)]);
-    test.enclosingLibrary.addTypedef(typedef_);
+    test.addNode(typedef_);
   });
   negativeTest(
       'Invalid typedefs Foo = Bar, Bar = Foo',
@@ -398,7 +400,7 @@
     var foo = new Typedef('Foo',
         new InterfaceType(test.otherClass, [new TypeParameterType(param)]),
         typeParameters: [param]);
-    test.enclosingLibrary.addTypedef(foo);
+    test.addNode(foo);
   });
   positiveTest('Valid typedef Foo<T extends C<T>> = C<T>', (TestHarness test) {
     var param = new TypeParameter('T', test.otherClass.rawType);
@@ -407,7 +409,7 @@
     var foo = new Typedef('Foo',
         new InterfaceType(test.otherClass, [new TypeParameterType(param)]),
         typeParameters: [param]);
-    test.enclosingLibrary.addTypedef(foo);
+    test.addNode(foo);
   });
   positiveTest('Valid typedef Foo<T> = dynamic, Bar<T extends Foo<T>> = C<T>',
       (TestHarness test) {
@@ -448,7 +450,7 @@
         new InterfaceType(test.otherClass, [new TypeParameterType(param)]),
         typeParameters: [param]);
     param.bound = new TypedefType(foo, [const DynamicType()]);
-    test.enclosingLibrary.addTypedef(foo);
+    test.addNode(foo);
   });
   negativeTest(
       'Typedef arity error',
@@ -510,6 +512,8 @@
       addClassMember(node);
     } else if (node is Class) {
       addClass(node);
+    } else if (node is Typedef) {
+      addTypedef(node);
     }
   }
 
@@ -534,6 +538,10 @@
     enclosingLibrary.addClass(node);
   }
 
+  void addTypedef(Typedef node) {
+    enclosingLibrary.addTypedef(node);
+  }
+
   VariableDeclaration makeVariable() => new VariableDeclaration(null);
 
   TypeParameter makeTypeParameter([String name]) {
@@ -571,21 +579,21 @@
   }
 }
 
-negativeTest(String name, matcher, TreeNode makeTestCase(TestHarness test)) {
+negativeTest(String name, matcher, void makeTestCase(TestHarness test)) {
   if (matcher is String) {
     matcher = equals(matcher);
   }
   test(name, () {
     var test = new TestHarness();
-    test.addNode(makeTestCase(test));
+    makeTestCase(test);
     checkHasError(test.component, matcher);
   });
 }
 
-positiveTest(String name, TreeNode makeTestCase(TestHarness test)) {
+positiveTest(String name, void makeTestCase(TestHarness test)) {
   test(name, () {
     var test = new TestHarness();
-    test.addNode(makeTestCase(test));
+    makeTestCase(test);
     verifyComponent(test.component);
   });
 }
diff --git a/pkg/pkg.status b/pkg/pkg.status
index bc3a62d..c8f7401 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -219,16 +219,10 @@
 [ $compiler == dart2js && $csp ]
 mutation_observer: Skip # This test cannot run under CSP because it is injecting a JavaScript polyfill
 
-[ $compiler == dart2js && $strong ]
-status_file/test/status_expression_dnf_test: RuntimeError # not strong-clean
-
 [ $compiler == dart2js && ($runtime == chrome || $runtime == ff) ]
 async/test/stream_zip_test: SkipSlow # Times out. Issue 22050
 collection/test/unmodifiable_collection_test: SkipSlow # Times out. Issue 22050
 
-[ $compiler == none && !$preview_dart_2 ]
-analysis_server/test/analysis/get_errors_test: Fail
-
 [ $runtime == vm && $system == windows ]
 analysis_server/test/analysis/get_errors_test: Skip # runtime error, Issue 22180
 analysis_server/test/benchmarks_test: RuntimeError # Issue 32355
diff --git a/pkg/smith/lib/configuration.dart b/pkg/smith/lib/configuration.dart
index f1ce8b4..e002d81 100644
--- a/pkg/smith/lib/configuration.dart
+++ b/pkg/smith/lib/configuration.dart
@@ -363,7 +363,7 @@
       runtime == other.runtime &&
       system == other.system &&
       builderTag == other.builderTag &&
-      vmOptions == other.vmOptions &&
+      vmOptions.join(" & ") == other.vmOptions.join(" & ") &&
       timeout == other.timeout &&
       enableAsserts == other.enableAsserts &&
       isChecked == other.isChecked &&
@@ -390,7 +390,7 @@
       runtime.hashCode ^
       system.hashCode ^
       builderTag.hashCode ^
-      vmOptions.hashCode ^
+      vmOptions.join(" & ").hashCode ^
       timeout.hashCode ^
       (enableAsserts ? 1 : 0) ^
       (isChecked ? 2 : 0) ^
@@ -419,7 +419,7 @@
     fields.add("system: $system");
 
     if (builderTag != "") fields.add("builder-tag: $builderTag");
-    if (vmOptions != "") fields.add("vm-options: $vmOptions");
+    if (vmOptions != "") fields.add("vm-options: [${vmOptions.join(", ")}]");
     if (timeout != 0) fields.add("timeout: $timeout");
     if (enableAsserts) fields.add("enable-asserts");
     if (isChecked) fields.add("checked");
diff --git a/pkg/smith/test/configuration_test.dart b/pkg/smith/test/configuration_test.dart
index 626e9864..c7e64fe 100644
--- a/pkg/smith/test/configuration_test.dart
+++ b/pkg/smith/test/configuration_test.dart
@@ -199,7 +199,7 @@
         expect(
             Configuration.parse("dart2js", {
               "builder-tag": "the tag",
-              "vm-options": "vm stuff",
+              "vm-options": ["vm stuff", "more vm stuff"],
               "enable-asserts": true,
               "checked": true,
               "csp": true,
diff --git a/pkg/smith/test/test_matrix_test.dart b/pkg/smith/test/test_matrix_test.dart
index 3872422..7c20a66 100644
--- a/pkg/smith/test/test_matrix_test.dart
+++ b/pkg/smith/test/test_matrix_test.dart
@@ -11,12 +11,12 @@
       var testMatrix = TestMatrix.fromJson({
         "configurations": {
           "x64-dart2js-debug-vm-linux": <String, dynamic>{
-            "options": <String, dynamic>{"enableAsserts": true},
+            "options": <String, dynamic>{"enable-asserts": true},
           },
           "x64-dartdevc-vm-linux": <String, dynamic>{
             "options": <String, dynamic>{
               "mode": "release",
-              "enableAsserts": true
+              "enable-asserts": true
             },
           },
         }
@@ -51,10 +51,10 @@
           {
             "configurations": {
               "one-x64-dart2js-debug-vm-linux": <String, dynamic>{
-                "options": <String, dynamic>{"enableAsserts": true}
+                "options": <String, dynamic>{"enable-asserts": true}
               },
               "two-x64-dart2js-debug-vm-linux": <String, dynamic>{
-                "options": <String, dynamic>{"enableAsserts": true}
+                "options": <String, dynamic>{"enable-asserts": true}
               },
             }
           });
diff --git a/pkg/status_file/lib/src/disjunctive.dart b/pkg/status_file/lib/src/disjunctive.dart
index 55dd7b7..4c461b2 100644
--- a/pkg/status_file/lib/src/disjunctive.dart
+++ b/pkg/status_file/lib/src/disjunctive.dart
@@ -102,7 +102,7 @@
   });
   var combinedMinSets = _combineMinSets(
       clauses.map((e) => [new LogicExpression.and(e)]).toList(), []);
-  List<List<LogicExpression>> minCover = _findMinCover(combinedMinSets, []);
+  List<List<Expression>> minCover = _findMinCover(combinedMinSets, []);
   var finalOperands = minCover.map((minSet) => _reduceMinSet(minSet)).toList();
   return new LogicExpression.or(finalOperands).normalize();
 }
diff --git a/pkg/vm/bin/frontend_server_starter.dart b/pkg/vm/bin/frontend_server_starter.dart
index dcbf63f..fedda20 100644
--- a/pkg/vm/bin/frontend_server_starter.dart
+++ b/pkg/vm/bin/frontend_server_starter.dart
@@ -1,9 +1,13 @@
 library frontend_server;
 
 import 'dart:async';
+import 'dart:io';
 
 import '../lib/frontend_server.dart';
 
 Future<Null> main(List<String> args) async {
-  starter(args);
+  final int exitCode = await starter(args);
+  if (exitCode != 0) {
+    exit(exitCode);
+  }
 }
diff --git a/pkg/vm/bin/gen_kernel.dart b/pkg/vm/bin/gen_kernel.dart
index b5e949a..a655aeb 100644
--- a/pkg/vm/bin/gen_kernel.dart
+++ b/pkg/vm/bin/gen_kernel.dart
@@ -10,12 +10,12 @@
 import 'package:kernel/binary/ast_to_binary.dart';
 import 'package:kernel/src/tool/batch_util.dart' as batch_util;
 import 'package:kernel/target/targets.dart' show TargetFlags;
-import 'package:kernel/target/vm.dart' show VmTarget;
 import 'package:kernel/text/ast_to_text.dart'
     show globalDebuggingNames, NameSystem;
 import 'package:vm/bytecode/gen_bytecode.dart' show isKernelBytecodeEnabled;
 import 'package:vm/kernel_front_end.dart'
     show compileToKernel, ErrorDetector, ErrorPrinter, parseCommandLineDefines;
+import 'package:vm/target/vm.dart' show VmTarget;
 
 final ArgParser _argParser = new ArgParser(allowTrailingOptions: true)
   ..addOption('platform',
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index 1d47530..6814e1c 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -37,9 +37,9 @@
 import 'package:front_end/src/fasta/hybrid_file_system.dart';
 import 'package:kernel/kernel.dart' show Component, Procedure;
 import 'package:kernel/target/targets.dart' show TargetFlags;
-import 'package:kernel/target/vm.dart' show VmTarget;
 import 'package:vm/incremental_compiler.dart';
 import 'package:vm/http_filesystem.dart';
+import 'package:vm/target/vm.dart' show VmTarget;
 
 final bool verbose = new bool.fromEnvironment('DFE_VERBOSE');
 const String platformKernelFile = 'virtual_platform_kernel.dill';
diff --git a/pkg/vm/lib/bytecode/assembler.dart b/pkg/vm/lib/bytecode/assembler.dart
index aec44bf..bc3f8ac 100644
--- a/pkg/vm/lib/bytecode/assembler.dart
+++ b/pkg/vm/lib/bytecode/assembler.dart
@@ -232,12 +232,8 @@
     emitWord(_encodeAD(Opcode.kStaticCall, ra, rd));
   }
 
-  void emitInstanceCall1(int ra, int rd) {
-    emitWord(_encodeAD(Opcode.kInstanceCall1, ra, rd));
-  }
-
-  void emitInstanceCall2(int ra, int rd) {
-    emitWord(_encodeAD(Opcode.kInstanceCall2, ra, rd));
+  void emitInstanceCall(int ra, int rd) {
+    emitWord(_encodeAD(Opcode.kInstanceCall, ra, rd));
   }
 
   void emitInstanceCall1Opt(int ra, int rd) {
diff --git a/pkg/vm/lib/bytecode/constant_pool.dart b/pkg/vm/lib/bytecode/constant_pool.dart
index e09d313..662f140 100644
--- a/pkg/vm/lib/bytecode/constant_pool.dart
+++ b/pkg/vm/lib/bytecode/constant_pool.dart
@@ -126,42 +126,41 @@
   List<Pair<CanonicalNameReference, ConstantIndex>> fieldValues;
 }
 
-type ConstantSymbol extends ConstantPoolEntry {
-  Byte tag = 18;
-  StringReference value;
-}
-
 type ConstantTypeArgumentsForInstanceAllocation extends ConstantPoolEntry {
-  Byte tag = 19;
+  Byte tag = 18;
   CanonicalNameReference instantiatingClass;
   List<DartType> types;
 }
 
 type ConstantClosureFunction extends ConstantPoolEntry {
-  Byte tag = 20;
+  Byte tag = 19;
   StringReference name;
   FunctionNode function; // Doesn't have a body.
 }
 
 type ConstantEndClosureFunctionScope extends ConstantPoolEntry {
-  Byte tag = 21;
+  Byte tag = 20;
 }
 
 type ConstantNativeEntry extends ConstantPoolEntry {
-  Byte tag = 22;
+  Byte tag = 21;
   StringReference nativeName;
 }
 
 type ConstantSubtypeTestCache extends ConstantPoolEntry {
-  Byte tag = 23;
+  Byte tag = 22;
 }
 
 type ConstantPartialTearOffInstantiation extends ConstantPoolEntry {
-  Byte tag = 24;
+  Byte tag = 23;
   ConstantIndex tearOffConstant;
   ConstantIndex typeArguments;
 }
 
+type ConstantEmptyTypeArguments extends ConstantPoolEntry {
+  Byte tag = 24;
+}
+
 */
 
 enum ConstantTag {
@@ -183,13 +182,13 @@
   kTypeArguments,
   kList,
   kInstance,
-  kSymbol,
   kTypeArgumentsForInstanceAllocation,
   kClosureFunction,
   kEndClosureFunctionScope,
   kNativeEntry,
   kSubtypeTestCache,
-  kPartialTearOffInstantiation
+  kPartialTearOffInstantiation,
+  kEmptyTypeArguments,
 }
 
 abstract class ConstantPoolEntry {
@@ -247,8 +246,6 @@
         return new ConstantList.readFromBinary(source);
       case ConstantTag.kInstance:
         return new ConstantInstance.readFromBinary(source);
-      case ConstantTag.kSymbol:
-        return new ConstantSymbol.readFromBinary(source);
       case ConstantTag.kTypeArgumentsForInstanceAllocation:
         return new ConstantTypeArgumentsForInstanceAllocation.readFromBinary(
             source);
@@ -262,6 +259,8 @@
         return new ConstantSubtypeTestCache.readFromBinary(source);
       case ConstantTag.kPartialTearOffInstantiation:
         return new ConstantPartialTearOffInstantiation.readFromBinary(source);
+      case ConstantTag.kEmptyTypeArguments:
+        return new ConstantEmptyTypeArguments.readFromBinary(source);
     }
     throw 'Unexpected constant tag $tag';
   }
@@ -871,34 +870,6 @@
       mapEquals(this._fieldValues, other._fieldValues);
 }
 
-class ConstantSymbol extends ConstantPoolEntry {
-  final String value;
-
-  ConstantSymbol(this.value);
-  ConstantSymbol.fromLiteral(SymbolLiteral literal) : this(literal.value);
-
-  @override
-  ConstantTag get tag => ConstantTag.kSymbol;
-
-  @override
-  void writeValueToBinary(BinarySink sink) {
-    sink.writeStringReference(value);
-  }
-
-  ConstantSymbol.readFromBinary(BinarySource source)
-      : value = source.readStringReference();
-
-  @override
-  String toString() => 'Symbol \'$value\'';
-
-  @override
-  int get hashCode => value.hashCode;
-
-  @override
-  bool operator ==(other) =>
-      other is ConstantSymbol && this.value == other.value;
-}
-
 class ConstantTypeArgumentsForInstanceAllocation extends ConstantPoolEntry {
   final Reference _instantiatingClassRef;
   final List<DartType> typeArgs;
@@ -1094,6 +1065,27 @@
       this.typeArgumentsConstantIndex == other.typeArgumentsConstantIndex;
 }
 
+class ConstantEmptyTypeArguments extends ConstantPoolEntry {
+  const ConstantEmptyTypeArguments();
+
+  @override
+  ConstantTag get tag => ConstantTag.kEmptyTypeArguments;
+
+  @override
+  void writeValueToBinary(BinarySink sink) {}
+
+  ConstantEmptyTypeArguments.readFromBinary(BinarySource source);
+
+  @override
+  String toString() => 'EmptyTypeArguments';
+
+  @override
+  int get hashCode => 997;
+
+  @override
+  bool operator ==(other) => other is ConstantEmptyTypeArguments;
+}
+
 /// Reserved constant pool entry.
 class _ReservedConstantPoolEntry extends ConstantPoolEntry {
   const _ReservedConstantPoolEntry();
diff --git a/pkg/vm/lib/bytecode/dbc.dart b/pkg/vm/lib/bytecode/dbc.dart
index 809c47c..5ca0253 100644
--- a/pkg/vm/lib/bytecode/dbc.dart
+++ b/pkg/vm/lib/bytecode/dbc.dart
@@ -34,6 +34,9 @@
 //    D = index of TypeArgumentsField constant pool entry corresponding
 //    to an instance's class.
 //
+// 10. InstanceCall1 and InstanceCall2 instructions are superseded by
+//     InstanceCall which works for any number of checked arguments.
+//
 
 enum Opcode {
   kTrap,
@@ -59,8 +62,7 @@
   kPopLocal,
   kIndirectStaticCall,
   kStaticCall,
-  kInstanceCall1,
-  kInstanceCall2,
+  kInstanceCall,
   kInstanceCall1Opt,
   kInstanceCall2Opt,
   kPushPolymorphicInstanceCall,
@@ -316,9 +318,7 @@
       Encoding.kAD, const [Operand.imm, Operand.lit, Operand.none]),
   Opcode.kStaticCall: const Format(
       Encoding.kAD, const [Operand.imm, Operand.imm, Operand.none]),
-  Opcode.kInstanceCall1: const Format(
-      Encoding.kAD, const [Operand.imm, Operand.lit, Operand.none]),
-  Opcode.kInstanceCall2: const Format(
+  Opcode.kInstanceCall: const Format(
       Encoding.kAD, const [Operand.imm, Operand.lit, Operand.none]),
   Opcode.kInstanceCall1Opt: const Format(
       Encoding.kAD, const [Operand.imm, Operand.lit, Operand.none]),
diff --git a/pkg/vm/lib/bytecode/gen_bytecode.dart b/pkg/vm/lib/bytecode/gen_bytecode.dart
index 5131d42..1c543f5 100644
--- a/pkg/vm/lib/bytecode/gen_bytecode.dart
+++ b/pkg/vm/lib/bytecode/gen_bytecode.dart
@@ -4,6 +4,8 @@
 
 library vm.bytecode.gen_bytecode;
 
+import 'dart:math' show min;
+
 import 'package:kernel/ast.dart' hide MapEntry;
 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
 import 'package:kernel/core_types.dart' show CoreTypes;
@@ -258,10 +260,7 @@
         node.initializers.any((init) => init is RedirectingInitializer);
     if (!isRedirecting) {
       for (var field in node.enclosingClass.fields) {
-        if (!field.isStatic &&
-            field.initializer != null &&
-            !node.initializers.any(
-                (init) => init is FieldInitializer && init.field == field)) {
+        if (!field.isStatic && field.initializer != null) {
           _genFieldInitializer(field, field.initializer);
         }
       }
@@ -419,21 +418,49 @@
     }
   }
 
+  bool _canReuseSuperclassTypeArguments(List<DartType> superTypeArgs,
+      List<TypeParameter> typeParameters, int overlap) {
+    for (int i = 0; i < overlap; ++i) {
+      final superTypeArg = superTypeArgs[superTypeArgs.length - overlap + i];
+      if (!(superTypeArg is TypeParameterType &&
+          superTypeArg.parameter == typeParameters[i])) {
+        return false;
+      }
+    }
+    return true;
+  }
+
   List<DartType> _flattenInstantiatorTypeArguments(
       Class instantiatedClass, List<DartType> typeArgs) {
-    assert(typeArgs.length == instantiatedClass.typeParameters.length);
+    final typeParameters = instantiatedClass.typeParameters;
+    assert(typeArgs.length == typeParameters.length);
 
-    List<DartType> flatTypeArgs;
     final supertype = instantiatedClass.supertype;
     if (supertype == null) {
-      flatTypeArgs = <DartType>[];
-    } else {
-      final substitution =
-          Substitution.fromPairs(instantiatedClass.typeParameters, typeArgs);
-      flatTypeArgs = _flattenInstantiatorTypeArguments(supertype.classNode,
-          substitution.substituteSupertype(supertype).typeArguments);
+      return typeArgs;
     }
-    flatTypeArgs.addAll(typeArgs);
+
+    final superTypeArgs = _flattenInstantiatorTypeArguments(
+        supertype.classNode, supertype.typeArguments);
+
+    // Shrink type arguments by reusing portion of superclass type arguments
+    // if there is an overlapping. This optimization should be consistent with
+    // VM in order to correctly reuse instantiator type arguments.
+    int overlap = min(superTypeArgs.length, typeArgs.length);
+    for (; overlap > 0; --overlap) {
+      if (_canReuseSuperclassTypeArguments(
+          superTypeArgs, typeParameters, overlap)) {
+        break;
+      }
+    }
+
+    final substitution = Substitution.fromPairs(typeParameters, typeArgs);
+
+    List<DartType> flatTypeArgs = <DartType>[];
+    flatTypeArgs
+        .addAll(superTypeArgs.map((t) => substitution.substituteType(t)));
+    flatTypeArgs.addAll(typeArgs.getRange(overlap, typeArgs.length));
+
     return flatTypeArgs;
   }
 
@@ -577,7 +604,7 @@
     final argDescIndex = cp.add(new ConstantArgDesc(4));
     final icdataIndex = cp.add(new ConstantICData(
         InvocationKind.method, objectInstanceOf.name, argDescIndex));
-    asm.emitInstanceCall1(4, icdataIndex);
+    asm.emitInstanceCall(4, icdataIndex);
   }
 
   void start(Member node) {
@@ -586,20 +613,21 @@
     enclosingFunction = node.function;
     parentFunction = null;
     hasErrors = false;
-    if (node.isInstanceMember ||
-        node is Constructor ||
-        (node is Procedure && node.isFactory)) {
+    final isFactory = node is Procedure && node.isFactory;
+    if (node.isInstanceMember || node is Constructor || isFactory) {
       if (enclosingClass.typeParameters.isNotEmpty) {
         classTypeParameters =
             new Set<TypeParameter>.from(enclosingClass.typeParameters);
         // Treat type arguments of factory constructors as class
         // type parameters.
-        if (node is Procedure && node.isFactory) {
+        if (isFactory) {
           classTypeParameters.addAll(node.function.typeParameters);
         }
       }
       if (hasInstantiatorTypeArguments(enclosingClass)) {
-        final typeParameters = enclosingClass.typeParameters
+        final typeParameters = (isFactory
+                ? node.function.typeParameters
+                : enclosingClass.typeParameters)
             .map((p) => new TypeParameterType(p))
             .toList();
         instantiatorTypeArguments =
@@ -964,8 +992,10 @@
     asm.emitStoreFieldTOS(
         cp.add(new ConstantInstanceField(closureFunctionTypeArguments)));
 
-    // TODO(alexmarkov): How to put Object::empty_type_arguments()
-    // to _delayed_type_arguments?
+    asm.emitPush(temp);
+    asm.emitPushConstant(cp.add(const ConstantEmptyTypeArguments()));
+    asm.emitStoreFieldTOS(
+        cp.add(new ConstantInstanceField(closureDelayedTypeArguments)));
 
     asm.emitPush(temp);
     asm.emitPushConstant(closureFunctionIndex);
@@ -1160,7 +1190,7 @@
       final argDescIndex = cp.add(new ConstantArgDesc(4));
       final icdataIndex = cp.add(new ConstantICData(
           InvocationKind.method, objectAs.name, argDescIndex));
-      asm.emitInstanceCall1(4, icdataIndex);
+      asm.emitInstanceCall(4, icdataIndex);
     }
   }
 
@@ -1457,8 +1487,7 @@
         args.named.length +
         1 /* receiver */ +
         (args.types.isNotEmpty ? 1 : 0) /* type arguments */;
-    // TODO(alexmarkov): figure out when generate InstanceCall2 (2 checked arguments).
-    asm.emitInstanceCall1(totalArgCount, icdataIndex);
+    asm.emitInstanceCall(totalArgCount, icdataIndex);
   }
 
   @override
@@ -1467,7 +1496,7 @@
     final argDescIndex = cp.add(new ConstantArgDesc(1));
     final icdataIndex = cp.add(
         new ConstantICData(InvocationKind.getter, node.name, argDescIndex));
-    asm.emitInstanceCall1(1, icdataIndex);
+    asm.emitInstanceCall(1, icdataIndex);
   }
 
   @override
@@ -1485,7 +1514,7 @@
     final argDescIndex = cp.add(new ConstantArgDesc(2));
     final icdataIndex = cp.add(
         new ConstantICData(InvocationKind.setter, node.name, argDescIndex));
-    asm.emitInstanceCall1(2, icdataIndex);
+    asm.emitInstanceCall(2, icdataIndex);
     asm.emitDrop1();
 
     if (hasResult) {
@@ -1695,8 +1724,7 @@
 
   @override
   visitSymbolLiteral(SymbolLiteral node) {
-    final cpIndex = cp.add(new ConstantSymbol.fromLiteral(node));
-    asm.emitPushConstant(cpIndex);
+    _genPushConstExpr(node);
   }
 
   @override
@@ -1797,6 +1825,7 @@
     }
 
     _genStaticCall(throwNewAssertionError, new ConstantArgDesc(3), 3);
+    asm.emitDrop1();
 
     asm.bind(done);
   }
@@ -1880,7 +1909,7 @@
     const kMoveNext = 'moveNext'; // Iterator.moveNext
     const kCurrent = 'current'; // Iterator.current
 
-    asm.emitInstanceCall1(
+    asm.emitInstanceCall(
         1,
         cp.add(new ConstantICData(InvocationKind.getter, new Name(kIterator),
             cp.add(new ConstantArgDesc(1)))));
@@ -1908,7 +1937,7 @@
       asm.emitPush(iteratorTemp);
     }
 
-    asm.emitInstanceCall1(
+    asm.emitInstanceCall(
         1,
         cp.add(new ConstantICData(InvocationKind.method, new Name(kMoveNext),
             cp.add(new ConstantArgDesc(1)))));
@@ -1919,7 +1948,7 @@
     _genPushContextIfCaptured(node.variable);
 
     asm.emitPush(iteratorTemp);
-    asm.emitInstanceCall1(
+    asm.emitInstanceCall(
         1,
         cp.add(new ConstantICData(InvocationKind.getter, new Name(kCurrent),
             cp.add(new ConstantArgDesc(1)))));
@@ -2049,9 +2078,7 @@
         for (var expr in switchCase.expressions) {
           asm.emitPush(temp);
           _genPushConstExpr(expr);
-          // TODO(alexmarkov): generate InstanceCall2 once we have a way to
-          // mark ICData as having 2 checked arguments.
-          asm.emitInstanceCall1(
+          asm.emitInstanceCall(
               2,
               cp.add(new ConstantICData(
                   InvocationKind.method, new Name('=='), equalsArgDesc)));
diff --git a/pkg/vm/lib/frontend_server.dart b/pkg/vm/lib/frontend_server.dart
index 22fba6d..3a236e7 100644
--- a/pkg/vm/lib/frontend_server.dart
+++ b/pkg/vm/lib/frontend_server.dart
@@ -28,9 +28,11 @@
 import 'package:kernel/target/targets.dart';
 import 'package:path/path.dart' as path;
 import 'package:usage/uuid/uuid.dart';
+
 import 'package:vm/incremental_compiler.dart' show IncrementalCompiler;
 import 'package:vm/kernel_front_end.dart'
     show compileToKernel, parseCommandLineDefines;
+import 'package:vm/target/install.dart' show installAdditionalTargets;
 
 ArgParser argParser = new ArgParser(allowTrailingOptions: true)
   ..addFlag('train',
@@ -300,9 +302,16 @@
       return false;
     }
 
+    // Ensure that Flutter and VM targets are added to targets dictionary.
+    installAdditionalTargets();
+
     final TargetFlags targetFlags = new TargetFlags(
         strongMode: options['strong'], syncAsync: options['sync-async']);
     compilerOptions.target = getTarget(options['target'], targetFlags);
+    if (compilerOptions.target == null) {
+      print('Failed to create front-end target ${options['target']}.');
+      return false;
+    }
 
     final String importDill = options['import-dill'];
     if (importDill != null) {
@@ -390,8 +399,13 @@
       if (uri == null || '$uri' == '') continue nextUri;
 
       final List<int> oldBytes = component.uriToSource[uri].source;
-      final FileSystemEntity entity =
-          _compilerOptions.fileSystem.entityForUri(uri);
+      FileSystemEntity entity;
+      try {
+        entity = _compilerOptions.fileSystem.entityForUri(uri);
+      } catch (_) {
+        // Ignore errors that might be caused by non-file uris.
+        continue nextUri;
+      }
       if (!await entity.exists()) {
         _generator.invalidate(uri);
         continue nextUri;
@@ -554,7 +568,7 @@
 /// Listens for the compilation commands on [input] stream.
 /// This supports "interactive" recompilation mode of execution.
 void listenAndCompile(CompilerInterface compiler, Stream<List<int>> input,
-    ArgResults options, void quit(),
+    ArgResults options, Completer<int> completer,
     {IncrementalCompiler generator}) {
   _State state = _State.READY_FOR_INSTRUCTION;
   _CompileExpressionRequest compileExpressionRequest;
@@ -608,7 +622,7 @@
         } else if (string == 'reset') {
           compiler.resetIncrementalCompiler();
         } else if (string == 'quit') {
-          quit();
+          completer.complete(0);
         }
         break;
       case _State.RECOMPILE_LIST:
@@ -668,7 +682,7 @@
 /// processes user input.
 /// `compiler` is an optional parameter so it can be replaced with mocked
 /// version for testing.
-Future<void> starter(
+Future<int> starter(
   List<String> args, {
   CompilerInterface compiler,
   Stream<List<int>> input,
@@ -682,7 +696,7 @@
   } catch (error) {
     print('ERROR: $error\n');
     print(usage);
-    exit(1);
+    return 1;
   }
 
   if (options['train']) {
@@ -714,7 +728,7 @@
       compiler.acceptLastDelta();
       await compiler.recompileDelta();
       compiler.acceptLastDelta();
-      return;
+      return 0;
     } finally {
       temp.deleteSync(recursive: true);
     }
@@ -726,12 +740,14 @@
   );
 
   if (options.rest.isNotEmpty) {
-    exit(await compiler.compile(options.rest[0], options, generator: generator)
+    return await compiler.compile(options.rest[0], options,
+            generator: generator)
         ? 0
-        : 254);
+        : 254;
   }
 
-  listenAndCompile(compiler, input ?? stdin, options, () {
-    exit(0);
-  }, generator: generator);
+  Completer<int> completer = new Completer<int>();
+  listenAndCompile(compiler, input ?? stdin, options, completer,
+      generator: generator);
+  return completer.future;
 }
diff --git a/pkg/vm/lib/metadata/inferred_type.dart b/pkg/vm/lib/metadata/inferred_type.dart
index 17daf11..91200ea 100644
--- a/pkg/vm/lib/metadata/inferred_type.dart
+++ b/pkg/vm/lib/metadata/inferred_type.dart
@@ -9,18 +9,25 @@
 /// Metadata for annotating nodes with an inferred type information.
 class InferredType {
   final Reference _concreteClassReference;
-  final bool nullable;
+  final int _flags;
 
-  InferredType(Class concreteClass, bool nullable)
-      : this._byReference(getClassReference(concreteClass), nullable);
+  static const int flagNullable = 1 << 0;
+  static const int flagInt = 1 << 1;
 
-  InferredType._byReference(this._concreteClassReference, this.nullable);
+  InferredType(Class concreteClass, bool nullable, bool isInt)
+      : this._byReference(getClassReference(concreteClass),
+            (nullable ? flagNullable : 0) | (isInt ? flagInt : 0));
+
+  InferredType._byReference(this._concreteClassReference, this._flags);
 
   Class get concreteClass => _concreteClassReference?.asClass;
 
+  bool get nullable => (_flags & flagNullable) != 0;
+  bool get isInt => (_flags & flagInt) != 0;
+
   @override
   String toString() =>
-      "${concreteClass != null ? concreteClass : '!'}${nullable ? '?' : ''}";
+      "${concreteClass != null ? concreteClass : (isInt ? 'int' : '!')}${nullable ? '?' : ''}";
 }
 
 /// Repository for [InferredType].
@@ -35,14 +42,14 @@
   void writeToBinary(InferredType metadata, Node node, BinarySink sink) {
     sink.writeCanonicalNameReference(
         getCanonicalNameOfClass(metadata.concreteClass));
-    sink.writeByte(metadata.nullable ? 1 : 0);
+    sink.writeByte(metadata._flags);
   }
 
   @override
   InferredType readFromBinary(Node node, BinarySource source) {
     final concreteClassReference =
         source.readCanonicalNameReference()?.getReference();
-    final nullable = (source.readByte() != 0);
-    return new InferredType._byReference(concreteClassReference, nullable);
+    final flags = source.readByte();
+    return new InferredType._byReference(concreteClassReference, flags);
   }
 }
diff --git a/pkg/vm/lib/target/dart_runner.dart b/pkg/vm/lib/target/dart_runner.dart
index fe75c94..ba877f2 100644
--- a/pkg/vm/lib/target/dart_runner.dart
+++ b/pkg/vm/lib/target/dart_runner.dart
@@ -1,10 +1,10 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-library kernel.target.dart_runner;
+library vm.target.dart_runner;
 
 import 'package:kernel/target/targets.dart';
-import 'package:kernel/target/vm.dart' show VmTarget;
+import 'package:vm/target/vm.dart' show VmTarget;
 
 class DartRunnerTarget extends VmTarget {
   DartRunnerTarget(TargetFlags flags) : super(flags);
diff --git a/pkg/kernel/lib/target/flutter.dart b/pkg/vm/lib/target/flutter.dart
similarity index 89%
rename from pkg/kernel/lib/target/flutter.dart
rename to pkg/vm/lib/target/flutter.dart
index d0d73b7..3be0d7c 100644
--- a/pkg/kernel/lib/target/flutter.dart
+++ b/pkg/vm/lib/target/flutter.dart
@@ -1,10 +1,10 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-library kernel.target.flutter;
+library vm.target.flutter;
 
-import 'targets.dart';
-import 'vm.dart' show VmTarget;
+import 'package:kernel/target/targets.dart';
+import 'package:vm/target/vm.dart' show VmTarget;
 
 class FlutterTarget extends VmTarget {
   FlutterTarget(TargetFlags flags) : super(flags);
diff --git a/pkg/vm/lib/target/flutter_runner.dart b/pkg/vm/lib/target/flutter_runner.dart
index 8878c01..acb04e8 100644
--- a/pkg/vm/lib/target/flutter_runner.dart
+++ b/pkg/vm/lib/target/flutter_runner.dart
@@ -1,10 +1,10 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-library kernel.target.flutter_runner;
+library vm.target.flutter_runner;
 
 import 'package:kernel/target/targets.dart';
-import 'package:kernel/target/vm.dart' show VmTarget;
+import 'package:vm/target/vm.dart' show VmTarget;
 
 class FlutterRunnerTarget extends VmTarget {
   FlutterRunnerTarget(TargetFlags flags) : super(flags);
diff --git a/pkg/vm/lib/target/install.dart b/pkg/vm/lib/target/install.dart
new file mode 100644
index 0000000..d6d40b2
--- /dev/null
+++ b/pkg/vm/lib/target/install.dart
@@ -0,0 +1,28 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library vm.target.install;
+
+import 'package:kernel/target/targets.dart' show targets, TargetFlags;
+
+import 'package:vm/target/dart_runner.dart' show DartRunnerTarget;
+
+import 'package:vm/target/flutter.dart' show FlutterTarget;
+
+import 'package:vm/target/flutter_runner.dart' show FlutterRunnerTarget;
+
+import 'package:vm/target/vm.dart' show VmTarget;
+
+bool _installed = false;
+
+void installAdditionalTargets() {
+  if (!_installed) {
+    targets["dart_runner"] = (TargetFlags flags) => new DartRunnerTarget(flags);
+    targets["flutter"] = (TargetFlags flags) => new FlutterTarget(flags);
+    targets["flutter_runner"] =
+        (TargetFlags flags) => new FlutterRunnerTarget(flags);
+    targets["vm"] = (TargetFlags flags) => new VmTarget(flags);
+    _installed = true;
+  }
+}
diff --git a/pkg/kernel/lib/target/vm.dart b/pkg/vm/lib/target/vm.dart
similarity index 95%
rename from pkg/kernel/lib/target/vm.dart
rename to pkg/vm/lib/target/vm.dart
index eea56a4..71eb1caf 100644
--- a/pkg/kernel/lib/target/vm.dart
+++ b/pkg/vm/lib/target/vm.dart
@@ -1,21 +1,19 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-library kernel.target.vm;
+library vm.target.vm;
 
 import 'dart:core' hide MapEntry;
 
-import '../ast.dart';
-import '../class_hierarchy.dart';
-import '../core_types.dart';
-
-import '../transformations/mixin_full_resolution.dart' as transformMixins
-    show transformLibraries;
-import '../transformations/continuation.dart' as transformAsync
+import 'package:kernel/ast.dart';
+import 'package:kernel/class_hierarchy.dart';
+import 'package:kernel/core_types.dart';
+import 'package:kernel/target/targets.dart';
+import 'package:kernel/transformations/mixin_full_resolution.dart'
+    as transformMixins show transformLibraries;
+import 'package:kernel/transformations/continuation.dart' as transformAsync
     show transformLibraries, transformProcedure;
 
-import 'targets.dart';
-
 /// Specializes the kernel IR to the Dart VM.
 class VmTarget extends Target {
   final TargetFlags flags;
diff --git a/pkg/vm/lib/transformations/devirtualization.dart b/pkg/vm/lib/transformations/devirtualization.dart
index b83c1cf..13c4908 100644
--- a/pkg/vm/lib/transformations/devirtualization.dart
+++ b/pkg/vm/lib/transformations/devirtualization.dart
@@ -72,7 +72,7 @@
       directCall.checkReceiverForNull &&
       _objectMemberNames.contains(directCall.target.name);
 
-  DirectCallMetadata getDirectCall(TreeNode node, Member target,
+  DirectCallMetadata getDirectCall(TreeNode node, Member interfaceTarget,
       {bool setter = false});
 
   makeDirectCall(TreeNode node, Member target, DirectCallMetadata directCall) {
@@ -96,17 +96,20 @@
   visitMethodInvocation(MethodInvocation node) {
     super.visitMethodInvocation(node);
 
-    Member target = node.interfaceTarget;
-    if ((target != null) && isMethod(target)) {
-      DirectCallMetadata directCall = getDirectCall(node, target);
-      // TODO(dartbug.com/30480): Convert _isLegalTargetForMethodInvocation()
-      // check into an assertion once front-end implements override checks.
-      if ((directCall != null) &&
-          isMethod(directCall.target) &&
-          isLegalTargetForMethodInvocation(directCall.target, node.arguments) &&
-          !hasExtraTargetForNull(directCall)) {
-        makeDirectCall(node, target, directCall);
-      }
+    final Member target = node.interfaceTarget;
+    if (target != null && !isMethod(target)) {
+      return;
+    }
+
+    final DirectCallMetadata directCall = getDirectCall(node, target);
+
+    // TODO(alexmarkov): Convert _isLegalTargetForMethodInvocation()
+    // check into an assertion once front-end implements all override checks.
+    if ((directCall != null) &&
+        isMethod(directCall.target) &&
+        isLegalTargetForMethodInvocation(directCall.target, node.arguments) &&
+        !hasExtraTargetForNull(directCall)) {
+      makeDirectCall(node, target, directCall);
     }
   }
 
@@ -114,14 +117,17 @@
   visitPropertyGet(PropertyGet node) {
     super.visitPropertyGet(node);
 
-    Member target = node.interfaceTarget;
-    if ((target != null) && isFieldOrGetter(target)) {
-      DirectCallMetadata directCall = getDirectCall(node, target);
-      if ((directCall != null) &&
-          isFieldOrGetter(directCall.target) &&
-          !hasExtraTargetForNull(directCall)) {
-        makeDirectCall(node, target, directCall);
-      }
+    final Member target = node.interfaceTarget;
+    if (target != null && !isFieldOrGetter(target)) {
+      return;
+    }
+
+    final DirectCallMetadata directCall = getDirectCall(node, target);
+
+    if ((directCall != null) &&
+        isFieldOrGetter(directCall.target) &&
+        !hasExtraTargetForNull(directCall)) {
+      makeDirectCall(node, target, directCall);
     }
   }
 
@@ -129,12 +135,11 @@
   visitPropertySet(PropertySet node) {
     super.visitPropertySet(node);
 
-    Member target = node.interfaceTarget;
-    if (target != null) {
-      DirectCallMetadata directCall = getDirectCall(node, target, setter: true);
-      if (directCall != null) {
-        makeDirectCall(node, target, directCall);
-      }
+    final Member target = node.interfaceTarget;
+    final DirectCallMetadata directCall =
+        getDirectCall(node, target, setter: true);
+    if (directCall != null) {
+      makeDirectCall(node, target, directCall);
     }
   }
 }
@@ -148,10 +153,13 @@
       : super(coreTypes, component, hierarchy);
 
   @override
-  DirectCallMetadata getDirectCall(TreeNode node, Member target,
+  DirectCallMetadata getDirectCall(TreeNode node, Member interfaceTarget,
       {bool setter = false}) {
+    if (interfaceTarget == null) {
+      return null;
+    }
     Member singleTarget = _hierarchySubtype
-        .getSingleTargetForInterfaceInvocation(target, setter: setter);
+        .getSingleTargetForInterfaceInvocation(interfaceTarget, setter: setter);
     if (singleTarget == null) {
       return null;
     }
diff --git a/pkg/vm/lib/transformations/type_flow/analysis.dart b/pkg/vm/lib/transformations/type_flow/analysis.dart
index 82210b7..3ba77a7 100644
--- a/pkg/vm/lib/transformations/type_flow/analysis.dart
+++ b/pkg/vm/lib/transformations/type_flow/analysis.dart
@@ -450,6 +450,13 @@
         }
         _getReceiverTypeBuilder(targets, kNoSuchMethodMarker)
             .addConcreteType(receiver);
+      } else if (selector is DynamicSelector) {
+        if (kPrintTrace) {
+          tracePrint(
+              "Dynamic selector - adding noSuchMethod for receiver $receiver");
+        }
+        _getReceiverTypeBuilder(targets, kNoSuchMethodMarker)
+            .addConcreteType(receiver);
       } else {
         if (kPrintTrace) {
           tracePrint("Target is not found for receiver $receiver");
diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
index b17d1ad..0ed585c 100644
--- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
@@ -1067,16 +1067,17 @@
   }
 
   @override
-  visitSwitchStatement(SwitchStatement node) {
+  TypeExpr visitSwitchStatement(SwitchStatement node) {
     _visit(node.expression);
     for (var switchCase in node.cases) {
       switchCase.expressions.forEach(_visit);
       _visit(switchCase.body);
     }
+    return null;
   }
 
   @override
-  visitTryCatch(TryCatch node) {
+  TypeExpr visitTryCatch(TryCatch node) {
     _visit(node.body);
     for (var catchClause in node.catches) {
       if (catchClause.exception != null) {
@@ -1087,49 +1088,56 @@
       }
       _visit(catchClause.body);
     }
+    return null;
   }
 
   @override
-  visitTryFinally(TryFinally node) {
+  TypeExpr visitTryFinally(TryFinally node) {
     _visit(node.body);
     _visit(node.finalizer);
+    return null;
   }
 
   @override
-  visitVariableDeclaration(VariableDeclaration node) {
+  TypeExpr visitVariableDeclaration(VariableDeclaration node) {
     final v = _declareVariable(node, addInitType: true);
     if (node.initializer == null) {
       v.values.add(_nullType);
     }
+    return null;
   }
 
   @override
-  visitWhileStatement(WhileStatement node) {
+  TypeExpr visitWhileStatement(WhileStatement node) {
     _addUse(_visit(node.condition));
     _visit(node.body);
+    return null;
   }
 
   @override
-  visitYieldStatement(YieldStatement node) {
+  TypeExpr visitYieldStatement(YieldStatement node) {
     _visit(node.expression);
+    return null;
   }
 
   @override
-  visitFieldInitializer(FieldInitializer node) {
+  TypeExpr visitFieldInitializer(FieldInitializer node) {
     final value = _visit(node.value);
     final args = new Args<TypeExpr>([_receiver, value]);
     _makeCall(node,
         new DirectSelector(node.field, callKind: CallKind.PropertySet), args);
+    return null;
   }
 
   @override
-  visitRedirectingInitializer(RedirectingInitializer node) {
+  TypeExpr visitRedirectingInitializer(RedirectingInitializer node) {
     final args = _visitArguments(_receiver, node.arguments);
     _makeCall(node, new DirectSelector(node.target), args);
+    return null;
   }
 
   @override
-  visitSuperInitializer(SuperInitializer node) {
+  TypeExpr visitSuperInitializer(SuperInitializer node) {
     final args = _visitArguments(_receiver, node.arguments);
 
     Constructor target = null;
@@ -1146,22 +1154,27 @@
     }
     assertx(target != null);
     _makeCall(node, new DirectSelector(target), args);
+    return null;
   }
 
   @override
-  visitLocalInitializer(LocalInitializer node) {
+  TypeExpr visitLocalInitializer(LocalInitializer node) {
     visitVariableDeclaration(node.variable);
+    return null;
   }
 
   @override
-  visitAssertInitializer(AssertInitializer node) {
+  TypeExpr visitAssertInitializer(AssertInitializer node) {
     if (!kRemoveAsserts) {
       _visit(node.statement);
     }
+    return null;
   }
 
   @override
-  visitInvalidInitializer(InvalidInitializer node) {}
+  TypeExpr visitInvalidInitializer(InvalidInitializer node) {
+    return null;
+  }
 
   @override
   TypeExpr visitConstantExpression(ConstantExpression node) {
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index eb2f7d1..098e79d 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -96,7 +96,7 @@
             _typeFlowAnalysis.environment.hierarchy);
 
   @override
-  DirectCallMetadata getDirectCall(TreeNode node, Member target,
+  DirectCallMetadata getDirectCall(TreeNode node, Member interfaceTarget,
       {bool setter = false}) {
     final callSite = _typeFlowAnalysis.callSite(node);
     if (callSite != null) {
@@ -115,10 +115,12 @@
   final TypeFlowAnalysis _typeFlowAnalysis;
   final InferredTypeMetadataRepository _inferredTypeMetadata;
   final UnreachableNodeMetadataRepository _unreachableNodeMetadata;
+  final DartType _intType;
 
   AnnotateKernel(Component component, this._typeFlowAnalysis)
       : _inferredTypeMetadata = new InferredTypeMetadataRepository(),
-        _unreachableNodeMetadata = new UnreachableNodeMetadataRepository() {
+        _unreachableNodeMetadata = new UnreachableNodeMetadataRepository(),
+        _intType = _typeFlowAnalysis.environment.intType {
     component.addMetadataRepository(_inferredTypeMetadata);
     component.addMetadataRepository(_unreachableNodeMetadata);
   }
@@ -127,23 +129,25 @@
     assertx(type != null);
 
     Class concreteClass;
+    bool isInt = false;
 
     final nullable = type is NullableType;
     if (nullable) {
-      final baseType = (type as NullableType).baseType;
-
-      if (baseType == const EmptyType()) {
-        concreteClass = _typeFlowAnalysis.environment.coreTypes.nullClass;
-      } else {
-        concreteClass =
-            baseType.getConcreteClass(_typeFlowAnalysis.hierarchyCache);
-      }
-    } else {
-      concreteClass = type.getConcreteClass(_typeFlowAnalysis.hierarchyCache);
+      type = (type as NullableType).baseType;
     }
 
-    if ((concreteClass != null) || !nullable) {
-      return new InferredType(concreteClass, nullable);
+    if (nullable && type == const EmptyType()) {
+      concreteClass = _typeFlowAnalysis.environment.coreTypes.nullClass;
+    } else {
+      concreteClass = type.getConcreteClass(_typeFlowAnalysis.hierarchyCache);
+
+      if (concreteClass == null) {
+        isInt = type.isSubtypeOf(_typeFlowAnalysis.hierarchyCache, _intType);
+      }
+    }
+
+    if ((concreteClass != null) || !nullable || isInt) {
+      return new InferredType(concreteClass, nullable, isInt);
     }
 
     return null;
diff --git a/pkg/vm/lib/transformations/type_flow/types.dart b/pkg/vm/lib/transformations/type_flow/types.dart
index 2100c02..c2da60f 100644
--- a/pkg/vm/lib/transformations/type_flow/types.dart
+++ b/pkg/vm/lib/transformations/type_flow/types.dart
@@ -95,6 +95,8 @@
 
   Class getConcreteClass(TypeHierarchy typeHierarchy) => null;
 
+  bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) => false;
+
   @override
   Type getComputedType(List<Type> types) => this;
 
@@ -168,6 +170,10 @@
   String toString() => "${baseType}?";
 
   @override
+  bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
+      baseType.isSubtypeOf(typeHierarchy, dartType);
+
+  @override
   int get order => TypeOrder.Nullable.index;
 
   @override
@@ -279,6 +285,10 @@
   String toString() => "_T ${types}";
 
   @override
+  bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
+      types.every((ConcreteType t) => t.isSubtypeOf(typeHierarchy, dartType));
+
+  @override
   int get order => TypeOrder.Set.index;
 
   static List<ConcreteType> _unionLists(
@@ -397,6 +407,10 @@
       .getConcreteClass(typeHierarchy);
 
   @override
+  bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
+      typeHierarchy.isSubtype(this.dartType, dartType);
+
+  @override
   int get hashCode => (dartType.hashCode + 37) & kHashMask;
 
   @override
@@ -505,6 +519,10 @@
       (dartType as InterfaceType).classNode;
 
   @override
+  bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
+      typeHierarchy.isSubtype(this.dartType, dartType);
+
+  @override
   int get hashCode => (classId.hashCode ^ 0x1234) & kHashMask;
 
   @override
diff --git a/pkg/vm/test/common_test_utils.dart b/pkg/vm/test/common_test_utils.dart
index b16ce78..5960361 100644
--- a/pkg/vm/test/common_test_utils.dart
+++ b/pkg/vm/test/common_test_utils.dart
@@ -12,9 +12,10 @@
 import 'package:kernel/text/ast_to_text.dart' show Printer;
 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter;
 import 'package:kernel/target/targets.dart';
-import 'package:kernel/target/vm.dart';
 import 'package:test/test.dart';
 
+import 'package:vm/target/vm.dart' show VmTarget;
+
 const bool kDumpActualResult = const bool.fromEnvironment('dump.actual.result');
 
 class TestingVmTarget extends VmTarget {
diff --git a/pkg/vm/test/frontend_server_test.dart b/pkg/vm/test/frontend_server_test.dart
index 5ffff46..75c22d1 100644
--- a/pkg/vm/test/frontend_server_test.dart
+++ b/pkg/vm/test/frontend_server_test.dart
@@ -3,7 +3,6 @@
 import 'dart:io';
 import 'dart:isolate';
 
-import 'package:args/src/arg_results.dart';
 import 'package:kernel/binary/ast_to_binary.dart';
 import 'package:kernel/ast.dart' show Component;
 import 'package:kernel/kernel.dart' show loadComponentFromBinary;
@@ -45,7 +44,7 @@
         'sdkroot',
       ];
       await starter(args, compiler: compiler);
-      final List<ArgResults> capturedArgs = verify(compiler.compile(
+      final List<dynamic> capturedArgs = verify(compiler.compile(
         argThat(equals('server.dart')),
         captureAny,
         generator: anyNamed('generator'),
@@ -62,7 +61,7 @@
         '--strong',
       ];
       await starter(args, compiler: compiler);
-      final List<ArgResults> capturedArgs = verify(compiler.compile(
+      final List<dynamic> capturedArgs = verify(compiler.compile(
         argThat(equals('server.dart')),
         captureAny,
         generator: anyNamed('generator'),
@@ -81,7 +80,7 @@
         '--no-sync-async',
       ];
       await starter(args, compiler: compiler);
-      final List<ArgResults> capturedArgs = verify(compiler.compile(
+      final List<dynamic> capturedArgs = verify(compiler.compile(
         argThat(equals('server.dart')),
         captureAny,
         generator: anyNamed('generator'),
@@ -99,7 +98,7 @@
         '--link-platform',
       ];
       await starter(args, compiler: compiler);
-      final List<ArgResults> capturedArgs = verify(compiler.compile(
+      final List<dynamic> capturedArgs = verify(compiler.compile(
         argThat(equals('server.dart')),
         captureAny,
         generator: anyNamed('generator'),
@@ -131,13 +130,15 @@
         compileCalled.sendPort.send(true);
       });
 
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
         input: inputStreamController.stream,
       );
       inputStreamController.add('compile server.dart\n'.codeUnits);
       await compileCalled.first;
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
       inputStreamController.close();
     });
   });
@@ -168,13 +169,15 @@
         compileCalled.sendPort.send(true);
       });
 
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
         input: inputStreamController.stream,
       );
       inputStreamController.add('compile server.dart\n'.codeUnits);
       await compileCalled.first;
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
       inputStreamController.close();
     });
 
@@ -191,18 +194,20 @@
         compileCalled.sendPort.send(true);
       });
 
-      await starter(
+      Future<int> result = starter(
         strongArgs,
         compiler: compiler,
         input: inputStreamController.stream,
       );
       inputStreamController.add('compile server.dart\n'.codeUnits);
       await compileCalled.first;
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
       inputStreamController.close();
     });
 
     test('compile few files', () async {
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final ReceivePort compileCalled = new ReceivePort();
       int counter = 1;
@@ -216,15 +221,17 @@
         compileCalled.sendPort.send(true);
       });
 
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
-        input: streamController.stream,
+        input: inputStreamController.stream,
       );
-      streamController.add('compile server1.dart\n'.codeUnits);
-      streamController.add('compile server2.dart\n'.codeUnits);
+      inputStreamController.add('compile server1.dart\n'.codeUnits);
+      inputStreamController.add('compile server2.dart\n'.codeUnits);
       await compileCalled.first;
-      streamController.close();
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
+      inputStreamController.close();
     });
   });
 
@@ -240,7 +247,7 @@
     ];
 
     test('recompile few files', () async {
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final ReceivePort recompileCalled = new ReceivePort();
 
@@ -248,12 +255,12 @@
           .thenAnswer((Invocation invocation) {
         recompileCalled.sendPort.send(true);
       });
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
-        input: streamController.stream,
+        input: inputStreamController.stream,
       );
-      streamController
+      inputStreamController
           .add('recompile abc\nfile1.dart\nfile2.dart\nabc\n'.codeUnits);
       await recompileCalled.first;
 
@@ -262,11 +269,13 @@
         compiler.invalidate(Uri.base.resolve('file2.dart')),
         await compiler.recompileDelta(filename: null),
       ]);
-      streamController.close();
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
+      inputStreamController.close();
     });
 
     test('recompile few files with new entrypoint', () async {
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final ReceivePort recompileCalled = new ReceivePort();
 
@@ -274,12 +283,12 @@
           .thenAnswer((Invocation invocation) {
         recompileCalled.sendPort.send(true);
       });
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
-        input: streamController.stream,
+        input: inputStreamController.stream,
       );
-      streamController.add(
+      inputStreamController.add(
           'recompile file2.dart abc\nfile1.dart\nfile2.dart\nabc\n'.codeUnits);
       await recompileCalled.first;
 
@@ -288,7 +297,9 @@
         compiler.invalidate(Uri.base.resolve('file2.dart')),
         await compiler.recompileDelta(filename: 'file2.dart'),
       ]);
-      streamController.close();
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
+      inputStreamController.close();
     });
 
     test('accept', () async {
@@ -298,13 +309,15 @@
       when(compiler.acceptLastDelta()).thenAnswer((Invocation invocation) {
         acceptCalled.sendPort.send(true);
       });
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
         input: inputStreamController.stream,
       );
       inputStreamController.add('accept\n'.codeUnits);
       await acceptCalled.first;
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
       inputStreamController.close();
     });
 
@@ -316,18 +329,20 @@
           .thenAnswer((Invocation invocation) {
         resetCalled.sendPort.send(true);
       });
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
         input: inputStreamController.stream,
       );
       inputStreamController.add('reset\n'.codeUnits);
       await resetCalled.first;
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
       inputStreamController.close();
     });
 
     test('compile then recompile', () async {
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final ReceivePort recompileCalled = new ReceivePort();
 
@@ -335,14 +350,14 @@
           .thenAnswer((Invocation invocation) {
         recompileCalled.sendPort.send(true);
       });
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: compiler,
-        input: streamController.stream,
+        input: inputStreamController.stream,
       );
-      streamController.add('compile file1.dart\n'.codeUnits);
-      streamController.add('accept\n'.codeUnits);
-      streamController
+      inputStreamController.add('compile file1.dart\n'.codeUnits);
+      inputStreamController.add('accept\n'.codeUnits);
+      inputStreamController
           .add('recompile def\nfile2.dart\nfile3.dart\ndef\n'.codeUnits);
       await recompileCalled.first;
 
@@ -354,7 +369,9 @@
         compiler.invalidate(Uri.base.resolve('file3.dart')),
         await compiler.recompileDelta(filename: null),
       ]);
-      streamController.close();
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
+      inputStreamController.close();
     });
   });
 
@@ -366,7 +383,7 @@
     ];
 
     test('compile then accept', () async {
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final StreamController<List<int>> stdoutStreamController =
           new StreamController<List<int>>();
@@ -400,23 +417,25 @@
           new _MockedBinaryPrinterFactory();
       when(printerFactory.newBinaryPrinter(any))
           .thenReturn(new _MockedBinaryPrinter());
-      await starter(
+      Future<int> result = starter(
         args,
         compiler: null,
-        input: streamController.stream,
+        input: inputStreamController.stream,
         output: ioSink,
         generator: generator,
         binaryPrinterFactory: printerFactory,
       );
 
-      streamController.add('compile file1.dart\n'.codeUnits);
+      inputStreamController.add('compile file1.dart\n'.codeUnits);
       await receivedResult.first;
-      streamController.add('accept\n'.codeUnits);
+      inputStreamController.add('accept\n'.codeUnits);
       receivedResult = new ReceivePort();
-      streamController.add('recompile def\nfile1.dart\ndef\n'.codeUnits);
+      inputStreamController.add('recompile def\nfile1.dart\ndef\n'.codeUnits);
       await receivedResult.first;
 
-      streamController.close();
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
+      inputStreamController.close();
     });
 
     group('compile with output path', () {
@@ -434,8 +453,8 @@
           '--output-incremental-dill',
           '/foo/bar/server.incremental.dart.dill',
         ];
-        await starter(args, compiler: compiler);
-        final List<ArgResults> capturedArgs = verify(compiler.compile(
+        expect(await starter(args, compiler: compiler), 0);
+        final List<dynamic> capturedArgs = verify(compiler.compile(
           argThat(equals('server.dart')),
           captureAny,
           generator: anyNamed('generator'),
@@ -501,10 +520,10 @@
         }
       });
 
-      await starter(args, input: streamController.stream, output: ioSink);
+      Future<int> result =
+          starter(args, input: streamController.stream, output: ioSink);
       streamController.add('compile ${file.path}\n'.codeUnits);
       int count = 0;
-      Completer<bool> allDone = new Completer<bool>();
       receivedResults.stream.listen((String outputFilenameAndErrorCount) {
         if (count == 0) {
           // First request is to 'compile', which results in full kernel file.
@@ -560,11 +579,12 @@
           CompilationResult result =
               new CompilationResult.parse(outputFilenameAndErrorCount);
           expect(result.errorsCount, greaterThan(0));
-          allDone.complete(true);
+
+          streamController.add('quit\n'.codeUnits);
         }
       });
 
-      expect(await allDone.future, true);
+      expect(await result, 0);
     });
 
     test('recompile request keeps incremental output dill filename', () async {
@@ -580,7 +600,7 @@
         '--output-dill=${dillFile.path}'
       ];
 
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final StreamController<List<int>> stdoutStreamController =
           new StreamController<List<int>>();
@@ -604,8 +624,9 @@
           }
         }
       });
-      await starter(args, input: streamController.stream, output: ioSink);
-      streamController.add('compile ${file.path}\n'.codeUnits);
+      Future<int> result =
+          starter(args, input: inputStreamController.stream, output: ioSink);
+      inputStreamController.add('compile ${file.path}\n'.codeUnits);
       int count = 0;
       Completer<bool> allDone = new Completer<bool>();
       receivedResults.stream.listen((String outputFilenameAndErrorCount) {
@@ -617,10 +638,10 @@
           expect(result.filename, dillFile.path);
           expect(result.errorsCount, 0);
           count += 1;
-          streamController.add('accept\n'.codeUnits);
+          inputStreamController.add('accept\n'.codeUnits);
           var file2 = new File('${tempDir.path}/bar.dart')..createSync();
           file2.writeAsStringSync("main() {}\n");
-          streamController.add('recompile ${file2.path} abc\n'
+          inputStreamController.add('recompile ${file2.path} abc\n'
               '${file2.path}\n'
               'abc\n'
               .codeUnits);
@@ -636,6 +657,9 @@
         }
       });
       expect(await allDone.future, true);
+      inputStreamController.add('quit\n'.codeUnits);
+      expect(await result, 0);
+      inputStreamController.close();
     });
 
     test('compile and recompile report non-zero error count', () async {
@@ -651,7 +675,7 @@
         '--output-dill=${dillFile.path}'
       ];
 
-      final StreamController<List<int>> streamController =
+      final StreamController<List<int>> inputStreamController =
           new StreamController<List<int>>();
       final StreamController<List<int>> stdoutStreamController =
           new StreamController<List<int>>();
@@ -675,10 +699,10 @@
           }
         }
       });
-      await starter(args, input: streamController.stream, output: ioSink);
-      streamController.add('compile ${file.path}\n'.codeUnits);
+      Future<int> result =
+          starter(args, input: inputStreamController.stream, output: ioSink);
+      inputStreamController.add('compile ${file.path}\n'.codeUnits);
       int count = 0;
-      Completer<bool> allDone = new Completer<bool>();
       receivedResults.stream.listen((String outputFilenameAndErrorCount) {
         CompilationResult result =
             new CompilationResult.parse(outputFilenameAndErrorCount);
@@ -688,10 +712,10 @@
             expect(result.filename, dillFile.path);
             expect(result.errorsCount, 2);
             count += 1;
-            streamController.add('accept\n'.codeUnits);
+            inputStreamController.add('accept\n'.codeUnits);
             var file2 = new File('${tempDir.path}/bar.dart')..createSync();
             file2.writeAsStringSync("main() { baz(); }\n");
-            streamController.add('recompile ${file2.path} abc\n'
+            inputStreamController.add('recompile ${file2.path} abc\n'
                 '${file2.path}\n'
                 'abc\n'
                 .codeUnits);
@@ -701,10 +725,10 @@
             expect(result.filename, dillIncFile.path);
             expect(result.errorsCount, 1);
             count += 1;
-            streamController.add('accept\n'.codeUnits);
+            inputStreamController.add('accept\n'.codeUnits);
             var file2 = new File('${tempDir.path}/bar.dart')..createSync();
             file2.writeAsStringSync("main() { }\n");
-            streamController.add('recompile ${file2.path} abc\n'
+            inputStreamController.add('recompile ${file2.path} abc\n'
                 '${file2.path}\n'
                 'abc\n'
                 .codeUnits);
@@ -714,10 +738,11 @@
             expect(result.filename, dillIncFile.path);
             expect(result.errorsCount, 0);
             expect(dillIncFile.existsSync(), equals(true));
-            allDone.complete(true);
+            inputStreamController.add('quit\n'.codeUnits);
         }
       });
-      expect(await allDone.future, true);
+      expect(await result, 0);
+      inputStreamController.close();
     });
 
     test('compile and recompile with MultiRootFileSystem', () async {
@@ -739,7 +764,7 @@
         '--filesystem-scheme=test-scheme',
         'test-scheme:///foo.dart'
       ];
-      await starter(args);
+      expect(await starter(args), 0);
     });
 
     test('compile and produce deps file', () async {
@@ -752,12 +777,13 @@
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
         '--strong',
+        '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}',
         '--depfile=${depFile.path}',
         file.path
       ];
-      await starter(args);
+      expect(await starter(args), 0);
       expect(depFile.existsSync(), true);
       var depContents = depFile.readAsStringSync();
       var depContentsParsed = depContents.split(': ');
@@ -774,7 +800,7 @@
         '--sdk-root=${sdkRoot.toFilePath()}',
         '--strong',
         '--incremental',
-        '--platform=${platformKernel.path}',
+        '--platform=$platformKernel',
         '--output-dill=${dillFile.path}',
         '--output-incremental-dill=${incrementalDillFile.path}'
       ];
@@ -790,7 +816,7 @@
 
       for (int serverCloses = 0; serverCloses < 2; ++serverCloses) {
         print("Restart #$serverCloses");
-        final StreamController<List<int>> streamController =
+        final StreamController<List<int>> inputStreamController =
             new StreamController<List<int>>();
         final StreamController<List<int>> stdoutStreamController =
             new StreamController<List<int>>();
@@ -816,10 +842,10 @@
           }
         });
 
-        await starter(args, input: streamController.stream, output: ioSink);
-        streamController.add('compile ${dart2js.path}\n'.codeUnits);
+        Future<int> result =
+            starter(args, input: inputStreamController.stream, output: ioSink);
+        inputStreamController.add('compile ${dart2js.path}\n'.codeUnits);
         int count = 0;
-        Completer<bool> allDone = new Completer<bool>();
         receivedResults.stream.listen((String outputFilenameAndErrorCount) {
           int delim = outputFilenameAndErrorCount.lastIndexOf(' ');
           expect(delim > 0, equals(true));
@@ -849,16 +875,17 @@
             }
 
             // Include platform and verify.
-            component = loadComponentFromBinary(platformKernel.path, component);
+            component =
+                loadComponentFromBinary(platformKernel.toFilePath(), component);
             expect(component.mainMethod, isNotNull);
             verifyComponent(component);
 
             count += 1;
 
             // Restart with no changes
-            streamController.add('accept\n'.codeUnits);
-            streamController.add('reset\n'.codeUnits);
-            streamController.add('recompile ${dart2js.path} x$count\n'
+            inputStreamController.add('accept\n'.codeUnits);
+            inputStreamController.add('reset\n'.codeUnits);
+            inputStreamController.add('recompile ${dart2js.path} x$count\n'
                 'x$count\n'
                 .codeUnits);
           } else if (count == 1) {
@@ -874,15 +901,16 @@
                 reason: "Expect the same number of sources after a reset.");
 
             // Include platform and verify.
-            component = loadComponentFromBinary(platformKernel.path, component);
+            component =
+                loadComponentFromBinary(platformKernel.toFilePath(), component);
             expect(component.mainMethod, isNotNull);
             verifyComponent(component);
 
             count += 1;
 
             // Reload with no changes
-            streamController.add('accept\n'.codeUnits);
-            streamController.add('recompile ${dart2js.path} x$count\n'
+            inputStreamController.add('accept\n'.codeUnits);
+            inputStreamController.add('recompile ${dart2js.path} x$count\n'
                 'x$count\n'
                 .codeUnits);
           } else if (count == 2) {
@@ -898,11 +926,12 @@
             count += 1;
 
             // Reload with 1 change
-            streamController.add('accept\n'.codeUnits);
-            streamController.add('recompile ${dart2js.path} x$count\n'
-                '${dart2jsOtherFile.path}\n'
-                'x$count\n'
-                .codeUnits);
+            inputStreamController.add('accept\n'.codeUnits);
+            inputStreamController
+                .add('recompile ${dart2jsOtherFile.path} x$count\n'
+                    '${dart2jsOtherFile.uri}\n'
+                    'x$count\n'
+                    .codeUnits);
           } else if (count == 3) {
             // Partial file. Expect to not be empty.
             expect(incrementalDillFile.existsSync(), equals(true));
@@ -918,10 +947,11 @@
 
             count += 1;
 
-            allDone.complete(true);
+            inputStreamController.add('quit\n'.codeUnits);
           }
         });
-        expect(await allDone.future, true);
+        expect(await result, 0);
+        inputStreamController.close();
       }
     }, timeout: new Timeout.factor(8));
   });
diff --git a/pkg/vm/test/incremental_compiler_test.dart b/pkg/vm/test/incremental_compiler_test.dart
index 221871c..16e6dad 100644
--- a/pkg/vm/test/incremental_compiler_test.dart
+++ b/pkg/vm/test/incremental_compiler_test.dart
@@ -14,13 +14,13 @@
 import 'package:kernel/binary/limited_ast_to_binary.dart';
 import 'package:kernel/kernel.dart';
 import 'package:kernel/target/targets.dart';
-import 'package:kernel/target/vm.dart';
 import 'package:kernel/text/ast_to_text.dart';
-import 'package:stream_channel/stream_channel.dart';
 import 'package:test/test.dart';
-import 'package:vm/incremental_compiler.dart';
 import 'package:web_socket_channel/io.dart';
 
+import 'package:vm/incremental_compiler.dart';
+import 'package:vm/target/vm.dart';
+
 main() {
   final platformKernel =
       computePlatformBinariesLocation().resolve('vm_platform_strong.dill');
@@ -179,9 +179,8 @@
 
   /// Establishes the JSON rpc connection.
   json_rpc.Peer _createPeer() {
-    StreamChannel socket =
-        new IOWebSocketChannel.connect('ws://127.0.0.1:$port/ws');
-    var peer = new json_rpc.Peer(socket);
+    var socket = new IOWebSocketChannel.connect('ws://127.0.0.1:$port/ws');
+    var peer = new json_rpc.Peer(socket.cast<String>());
     peer.listen().then((_) {
       print('connection to vm-service closed');
       return disconnect();
diff --git a/pkg/vm/testcases/bytecode/asserts.dart.expect b/pkg/vm/testcases/bytecode/asserts.dart.expect
index 3eb0000..3f5cf69 100644
--- a/pkg/vm/testcases/bytecode/asserts.dart.expect
+++ b/pkg/vm/testcases/bytecode/asserts.dart.expect
@@ -17,6 +17,7 @@
   PushConstant         CP#2
   PushConstant         CP#4
   IndirectStaticCall   3, CP#3
+  Drop1
 L1:
   PushConstant         CP#2
   ReturnTOS
@@ -37,7 +38,7 @@
   CheckStack
   JumpIfNoAsserts      L1
   Push                 FP[-6]
-  InstanceCall1        1, CP#1
+  InstanceCall         1, CP#1
   AssertBoolean        0
   PushConstant         CP#2
   IfEqStrictTOS
@@ -45,9 +46,10 @@
   PushConstant         CP#3
   PushConstant         CP#3
   Push                 FP[-5]
-  InstanceCall1        1, CP#4
+  InstanceCall         1, CP#4
   PushConstant         CP#6
   IndirectStaticCall   3, CP#5
+  Drop1
 L1:
   PushConstant         CP#7
   ReturnTOS
diff --git a/pkg/vm/testcases/bytecode/async.dart.expect b/pkg/vm/testcases/bytecode/async.dart.expect
index acc535f..b08838d 100644
--- a/pkg/vm/testcases/bytecode/async.dart.expect
+++ b/pkg/vm/testcases/bytecode/async.dart.expect
@@ -16,8 +16,11 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#24
   Push                 r2
+  PushConstant         CP#26
+  StoreFieldTOS        CP#27
+  Push                 r2
   PushConstant         CP#0
-  StoreFieldTOS        CP#26
+  StoreFieldTOS        CP#29
   Push                 r2
   Push                 r0
   StoreFieldTOS        CP#1
@@ -50,15 +53,18 @@
   [23] = Reserved
   [24] = InstanceField dart.core::_Closure::_function_type_arguments
   [25] = Reserved
-  [26] = InstanceField dart.core::_Closure::_function
-  [27] = Reserved
-  [28] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#8
-  [29] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#8
-  [30] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#8
-  [31] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [32] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
-  [33] = ICData get target-name 'future', arg-desc CP#8
-  [34] = EndClosureFunctionScope
+  [26] = EmptyTypeArguments
+  [27] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [28] = Reserved
+  [29] = InstanceField dart.core::_Closure::_function
+  [30] = Reserved
+  [31] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#8
+  [32] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#8
+  [33] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#8
+  [34] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [35] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
+  [36] = ICData get target-name 'future', arg-desc CP#8
+  [37] = EndClosureFunctionScope
 }
 Closure CP#11 {
   EntryOptional        1, 3, 0
@@ -137,7 +143,7 @@
   LoadContextVar       6
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#19
+  InstanceCall         3, CP#19
   Drop1
   Jump                 L3
 L3:
@@ -214,38 +220,41 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#24
   Push                 r3
+  PushConstant         CP#26
+  StoreFieldTOS        CP#27
+  Push                 r3
   PushConstant         CP#11
-  StoreFieldTOS        CP#26
+  StoreFieldTOS        CP#29
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#1
   StoreContextVar      5
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#28
+  PushConstant         CP#31
   IndirectStaticCall   1, CP#8
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#29
+  PushConstant         CP#32
   IndirectStaticCall   1, CP#8
   StoreContextVar      3
   Push                 r0
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#30
+  PushConstant         CP#33
   IndirectStaticCall   1, CP#8
   StoreContextVar      4
-  PushConstant         CP#31
+  PushConstant         CP#34
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#32
+  PushConstant         CP#35
   IndirectStaticCall   2, CP#15
   Drop1
   Push                 r0
   LoadContextVar       6
-  InstanceCall1        1, CP#33
+  InstanceCall         1, CP#36
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -321,32 +330,35 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#18
   Push                 r6
+  PushConstant         CP#20
+  StoreFieldTOS        CP#21
+  Push                 r6
   PushConstant         CP#5
-  StoreFieldTOS        CP#20
+  StoreFieldTOS        CP#23
   Push                 r6
   Push                 r0
   StoreFieldTOS        CP#6
   PopLocal             r5
   Push                 r5
-  PushConstant         CP#22
+  PushConstant         CP#25
   IndirectStaticCall   1, CP#1
   PopLocal             r2
   Push                 r5
-  PushConstant         CP#23
+  PushConstant         CP#26
   IndirectStaticCall   1, CP#1
   PopLocal             r3
   Push                 r5
-  PushConstant         CP#24
+  PushConstant         CP#27
   IndirectStaticCall   1, CP#1
   PopLocal             r4
-  PushConstant         CP#25
+  PushConstant         CP#28
   Push                 r5
-  PushConstant         CP#26
+  PushConstant         CP#29
   IndirectStaticCall   2, CP#9
   Drop1
   Push                 r0
   LoadContextVar       3
-  InstanceCall1        1, CP#27
+  InstanceCall         1, CP#30
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -375,14 +387,17 @@
   [17] = Reserved
   [18] = InstanceField dart.core::_Closure::_function_type_arguments
   [19] = Reserved
-  [20] = InstanceField dart.core::_Closure::_function
-  [21] = Reserved
-  [22] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
-  [23] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
-  [24] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
-  [25] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [26] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
-  [27] = ICData get target-name 'future', arg-desc CP#1
+  [20] = EmptyTypeArguments
+  [21] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [22] = Reserved
+  [23] = InstanceField dart.core::_Closure::_function
+  [24] = Reserved
+  [25] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
+  [26] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
+  [27] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
+  [28] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [29] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
+  [30] = ICData get target-name 'future', arg-desc CP#1
 }
 Closure CP#5 {
   EntryOptional        1, 3, 0
@@ -432,7 +447,7 @@
   LoadContextVar       3
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#13
+  InstanceCall         3, CP#13
   Drop1
   Jump                 L3
 L3:
@@ -525,38 +540,41 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#23
   Push                 r3
+  PushConstant         CP#25
+  StoreFieldTOS        CP#26
+  Push                 r3
   PushConstant         CP#5
-  StoreFieldTOS        CP#25
+  StoreFieldTOS        CP#28
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#6
   StoreContextVar      5
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#27
+  PushConstant         CP#30
   IndirectStaticCall   1, CP#1
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#28
+  PushConstant         CP#31
   IndirectStaticCall   1, CP#1
   StoreContextVar      3
   Push                 r0
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#29
+  PushConstant         CP#32
   IndirectStaticCall   1, CP#1
   StoreContextVar      4
-  PushConstant         CP#30
+  PushConstant         CP#33
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#31
+  PushConstant         CP#34
   IndirectStaticCall   2, CP#13
   Drop1
   Push                 r0
   LoadContextVar       8
-  InstanceCall1        1, CP#32
+  InstanceCall         1, CP#35
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -590,14 +608,17 @@
   [22] = Reserved
   [23] = InstanceField dart.core::_Closure::_function_type_arguments
   [24] = Reserved
-  [25] = InstanceField dart.core::_Closure::_function
-  [26] = Reserved
-  [27] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
-  [28] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
-  [29] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
-  [30] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [31] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13
-  [32] = ICData get target-name 'future', arg-desc CP#1
+  [25] = EmptyTypeArguments
+  [26] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [27] = Reserved
+  [28] = InstanceField dart.core::_Closure::_function
+  [29] = Reserved
+  [30] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
+  [31] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
+  [32] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
+  [33] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [34] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13
+  [35] = ICData get target-name 'future', arg-desc CP#1
 }
 Closure CP#5 {
   EntryOptional        1, 3, 0
@@ -680,7 +701,7 @@
   Push                 r4
   LoadContextVar       6
   Push                 r1
-  InstanceCall1        2, CP#14
+  InstanceCall         2, CP#14
   StoreContextVar      7
   Jump                 L4
 L4:
@@ -712,7 +733,7 @@
   LoadContextVar       8
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#18
+  InstanceCall         3, CP#18
   Drop1
   Jump                 L5
 L5:
@@ -817,38 +838,41 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#35
   Push                 r3
+  PushConstant         CP#37
+  StoreFieldTOS        CP#38
+  Push                 r3
   PushConstant         CP#5
-  StoreFieldTOS        CP#37
+  StoreFieldTOS        CP#40
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#6
   StoreContextVar      7
   Push                 r0
   LoadContextVar       7
-  PushConstant         CP#39
+  PushConstant         CP#42
   IndirectStaticCall   1, CP#1
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       7
-  PushConstant         CP#40
+  PushConstant         CP#43
   IndirectStaticCall   1, CP#1
   StoreContextVar      5
   Push                 r0
   Push                 r0
   LoadContextVar       7
-  PushConstant         CP#41
+  PushConstant         CP#44
   IndirectStaticCall   1, CP#1
   StoreContextVar      6
-  PushConstant         CP#42
+  PushConstant         CP#45
   Push                 r0
   LoadContextVar       7
-  PushConstant         CP#43
+  PushConstant         CP#46
   IndirectStaticCall   2, CP#9
   Drop1
   Push                 r0
   LoadContextVar       9
-  InstanceCall1        1, CP#44
+  InstanceCall         1, CP#47
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -894,14 +918,17 @@
   [34] = Reserved
   [35] = InstanceField dart.core::_Closure::_function_type_arguments
   [36] = Reserved
-  [37] = InstanceField dart.core::_Closure::_function
-  [38] = Reserved
-  [39] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
-  [40] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
-  [41] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
-  [42] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [43] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
-  [44] = ICData get target-name 'future', arg-desc CP#1
+  [37] = EmptyTypeArguments
+  [38] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [39] = Reserved
+  [40] = InstanceField dart.core::_Closure::_function
+  [41] = Reserved
+  [42] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
+  [43] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
+  [44] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
+  [45] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [46] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
+  [47] = ICData get target-name 'future', arg-desc CP#1
 }
 Closure CP#5 {
   EntryOptional        1, 3, 0
@@ -946,7 +973,7 @@
   Push                 r4
   LoadContextVar       0
   PushConstant         CP#8
-  InstanceCall1        2, CP#10
+  InstanceCall         2, CP#10
   AssertBoolean        0
   PushConstant         CP#11
   IfNeStrictTOS
@@ -963,7 +990,7 @@
   LoadContextParent
   LoadContextParent
   LoadContextVar       0
-  InstanceCall1        1, CP#12
+  InstanceCall         1, CP#12
   PopLocal             r8
   Push                 r4
   Push                 r8
@@ -973,7 +1000,7 @@
   Push                 r4
   LoadContextVar       0
   StoreLocal           r8
-  InstanceCall1        1, CP#13
+  InstanceCall         1, CP#13
   PushConstant         CP#11
   IfNeStrictTOS
   Jump                 L3
@@ -985,7 +1012,7 @@
   PopLocal             r4
   Push                 r4
   Push                 r8
-  InstanceCall1        1, CP#14
+  InstanceCall         1, CP#14
   StoreContextVar      0
   Push                 r4
   LoadContextParent
@@ -1009,7 +1036,7 @@
   LoadContextVar       0
   Push                 r4
   LoadContextVar       0
-  InstanceCall1        2, CP#15
+  InstanceCall         2, CP#15
   StoreContextVar      3
   Push                 r4
   LoadContextParent
@@ -1074,8 +1101,8 @@
   LoadContextParent
   LoadContextVar       3
   Push                 r1
-  InstanceCall1        2, CP#21
-  InstanceCall1        2, CP#22
+  InstanceCall         2, CP#21
+  InstanceCall         2, CP#22
   StoreContextVar      0
   Push                 r4
   LoadContextParent
@@ -1092,7 +1119,7 @@
   Push                 r4
   LoadContextVar       0
   PushConstant         CP#16
-  InstanceCall1        2, CP#23
+  InstanceCall         2, CP#23
   StoreLocal           r8
   StoreContextVar      0
   Push                 r8
@@ -1108,7 +1135,7 @@
   CheckStack
   Push                 r8
   PushConstant         CP#8
-  InstanceCall1        2, CP#24
+  InstanceCall         2, CP#24
   AssertBoolean        0
   PushConstant         CP#11
   IfNeStrictTOS
@@ -1117,11 +1144,11 @@
   Push                 r4
   LoadContextVar       0
   Push                 r8
-  InstanceCall1        2, CP#25
+  InstanceCall         2, CP#25
   StoreContextVar      0
   Push                 r8
   PushConstant         CP#16
-  InstanceCall1        2, CP#26
+  InstanceCall         2, CP#26
   StoreLocal           r8
   Drop1
   Jump                 L8
@@ -1167,7 +1194,7 @@
   LoadContextVar       9
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#30
+  InstanceCall         3, CP#30
   Drop1
   Jump                 L10
 L10:
@@ -1293,38 +1320,41 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#41
   Push                 r3
+  PushConstant         CP#43
+  StoreFieldTOS        CP#44
+  Push                 r3
   PushConstant         CP#5
-  StoreFieldTOS        CP#43
+  StoreFieldTOS        CP#46
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#6
   StoreContextVar      8
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#45
+  PushConstant         CP#48
   IndirectStaticCall   1, CP#1
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#46
+  PushConstant         CP#49
   IndirectStaticCall   1, CP#1
   StoreContextVar      6
   Push                 r0
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#47
+  PushConstant         CP#50
   IndirectStaticCall   1, CP#1
   StoreContextVar      7
-  PushConstant         CP#48
+  PushConstant         CP#51
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#49
+  PushConstant         CP#52
   IndirectStaticCall   2, CP#11
   Drop1
   Push                 r0
   LoadContextVar       12
-  InstanceCall1        1, CP#50
+  InstanceCall         1, CP#53
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -1376,14 +1406,17 @@
   [40] = Reserved
   [41] = InstanceField dart.core::_Closure::_function_type_arguments
   [42] = Reserved
-  [43] = InstanceField dart.core::_Closure::_function
-  [44] = Reserved
-  [45] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
-  [46] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
-  [47] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
-  [48] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [49] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#11
-  [50] = ICData get target-name 'future', arg-desc CP#1
+  [43] = EmptyTypeArguments
+  [44] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [45] = Reserved
+  [46] = InstanceField dart.core::_Closure::_function
+  [47] = Reserved
+  [48] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
+  [49] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
+  [50] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
+  [51] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [52] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#11
+  [53] = ICData get target-name 'future', arg-desc CP#1
 }
 Closure CP#5 {
   EntryOptional        1, 3, 0
@@ -1467,7 +1500,7 @@
   LoadContextParent
   LoadContextVar       2
   Push                 r1
-  InstanceCall1        2, CP#12
+  InstanceCall         2, CP#12
   StoreContextVar      0
   Jump                 L3
 Try #2 end:
@@ -1502,7 +1535,7 @@
   PushConstant         CP#3
   PushConstant         CP#3
   PushConstant         CP#14
-  InstanceCall1        4, CP#15
+  InstanceCall         4, CP#15
   AssertBoolean        0
   PushConstant         CP#16
   IfNeStrictTOS
@@ -1567,7 +1600,7 @@
   LoadContextParent
   LoadContextVar       2
   Push                 r1
-  InstanceCall1        2, CP#20
+  InstanceCall         2, CP#20
   StoreContextVar      0
   Push                 r4
   LoadContextParent
@@ -1650,7 +1683,7 @@
   LoadContextParent
   LoadContextVar       2
   Push                 r1
-  InstanceCall1        2, CP#25
+  InstanceCall         2, CP#25
   StoreContextVar      0
   Push                 r4
   LoadContextParent
@@ -1722,7 +1755,7 @@
   LoadContextParent
   LoadContextVar       2
   Push                 r1
-  InstanceCall1        2, CP#29
+  InstanceCall         2, CP#29
   StoreContextVar      0
   Push                 r4
   LoadContextParent
@@ -1791,7 +1824,7 @@
   LoadContextParent
   LoadContextVar       2
   Push                 r1
-  InstanceCall1        2, CP#33
+  InstanceCall         2, CP#33
   StoreContextVar      0
   Push                 r4
   LoadContextParent
@@ -1834,7 +1867,7 @@
   LoadContextVar       12
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#36
+  InstanceCall         3, CP#36
   Drop1
   Jump                 L12
 L12:
@@ -1946,8 +1979,11 @@
   PushConstant         CP#7
   StoreFieldTOS        CP#29
   Push                 r3
+  PushConstant         CP#31
+  StoreFieldTOS        CP#32
+  Push                 r3
   PushConstant         CP#1
-  StoreFieldTOS        CP#31
+  StoreFieldTOS        CP#34
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#2
@@ -1992,15 +2028,18 @@
   [28] = Reserved
   [29] = InstanceField dart.core::_Closure::_function_type_arguments
   [30] = Reserved
-  [31] = InstanceField dart.core::_Closure::_function
-  [32] = Reserved
-  [33] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5
-  [34] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5
-  [35] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5
-  [36] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [37] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
-  [38] = ICData get target-name 'future', arg-desc CP#5
-  [39] = EndClosureFunctionScope
+  [31] = EmptyTypeArguments
+  [32] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [33] = Reserved
+  [34] = InstanceField dart.core::_Closure::_function
+  [35] = Reserved
+  [36] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5
+  [37] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5
+  [38] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5
+  [39] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [40] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
+  [41] = ICData get target-name 'future', arg-desc CP#5
+  [42] = EndClosureFunctionScope
 }
 Closure CP#9 {
   EntryOptional        1, 3, 0
@@ -2086,7 +2125,7 @@
   LoadContextVar       0
   Push                 r4
   LoadContextVar       0
-  InstanceCall1        2, CP#16
+  InstanceCall         2, CP#16
   StoreContextVar      7
   Jump                 L3
   Jump                 L4
@@ -2165,7 +2204,7 @@
   LoadContextVar       8
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#24
+  InstanceCall         3, CP#24
   Drop1
   Jump                 L6
 L6:
@@ -2229,38 +2268,41 @@
   PushConstant         CP#7
   StoreFieldTOS        CP#29
   Push                 r3
+  PushConstant         CP#31
+  StoreFieldTOS        CP#32
+  Push                 r3
   PushConstant         CP#9
-  StoreFieldTOS        CP#31
+  StoreFieldTOS        CP#34
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#2
   StoreContextVar      6
   Push                 r0
   LoadContextVar       6
-  PushConstant         CP#33
+  PushConstant         CP#36
   IndirectStaticCall   1, CP#5
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       6
-  PushConstant         CP#34
+  PushConstant         CP#37
   IndirectStaticCall   1, CP#5
   StoreContextVar      4
   Push                 r0
   Push                 r0
   LoadContextVar       6
-  PushConstant         CP#35
+  PushConstant         CP#38
   IndirectStaticCall   1, CP#5
   StoreContextVar      5
-  PushConstant         CP#36
+  PushConstant         CP#39
   Push                 r0
   LoadContextVar       6
-  PushConstant         CP#37
+  PushConstant         CP#40
   IndirectStaticCall   2, CP#15
   Drop1
   Push                 r0
   LoadContextVar       8
-  InstanceCall1        1, CP#38
+  InstanceCall         1, CP#41
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -2361,38 +2403,41 @@
   PushConstant         CP#3
   StoreFieldTOS        CP#25
   Push                 r3
+  PushConstant         CP#27
+  StoreFieldTOS        CP#28
+  Push                 r3
   PushConstant         CP#5
-  StoreFieldTOS        CP#27
+  StoreFieldTOS        CP#30
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#6
   StoreContextVar      5
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#29
+  PushConstant         CP#32
   IndirectStaticCall   1, CP#1
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#30
+  PushConstant         CP#33
   IndirectStaticCall   1, CP#1
   StoreContextVar      3
   Push                 r0
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#31
+  PushConstant         CP#34
   IndirectStaticCall   1, CP#1
   StoreContextVar      4
-  PushConstant         CP#32
+  PushConstant         CP#35
   Push                 r0
   LoadContextVar       5
-  PushConstant         CP#33
+  PushConstant         CP#36
   IndirectStaticCall   2, CP#12
   Drop1
   Push                 r0
   LoadContextVar       7
-  InstanceCall1        1, CP#34
+  InstanceCall         1, CP#37
   ReturnTOS
   Push                 r0
   LoadContextParent
@@ -2428,14 +2473,17 @@
   [24] = Reserved
   [25] = InstanceField dart.core::_Closure::_function_type_arguments
   [26] = Reserved
-  [27] = InstanceField dart.core::_Closure::_function
-  [28] = Reserved
-  [29] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
-  [30] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
-  [31] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
-  [32] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [33] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#12
-  [34] = ICData get target-name 'future', arg-desc CP#1
+  [27] = EmptyTypeArguments
+  [28] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [29] = Reserved
+  [30] = InstanceField dart.core::_Closure::_function
+  [31] = Reserved
+  [32] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
+  [33] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
+  [34] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
+  [35] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [36] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#12
+  [37] = ICData get target-name 'future', arg-desc CP#1
 }
 Closure CP#5 {
   EntryOptional        1, 3, 0
@@ -2488,7 +2536,7 @@
   JumpIfNoAsserts      L2
   Push                 r1
   PushConstant         CP#11
-  InstanceCall1        2, CP#13
+  InstanceCall         2, CP#13
   AssertBoolean        0
   PushConstant         CP#14
   IfEqStrictTOS
@@ -2498,6 +2546,7 @@
   PushConstant         CP#3
   PushConstant         CP#16
   IndirectStaticCall   3, CP#15
+  Drop1
 L2:
   Push                 r4
   PushConstant         CP#17
@@ -2532,7 +2581,7 @@
   LoadContextVar       7
   Push                 r8
   Push                 r9
-  InstanceCall1        3, CP#20
+  InstanceCall         3, CP#20
   Drop1
   Jump                 L5
 L5:
diff --git a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
index 49ae297..16c0efe 100644
--- a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
+++ b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
@@ -122,7 +122,7 @@
   PushConstant         CP#0
   PushStatic           CP#0
   PushConstant         CP#1
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -318,7 +318,7 @@
   PushConstant         CP#0
   PushStatic           CP#0
   PushConstant         CP#1
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -326,7 +326,7 @@
   PushConstant         CP#5
   PushStatic           CP#5
   PushConstant         CP#1
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   AssertBoolean        0
   BooleanNegateTOS
   PopLocal             r0
@@ -342,7 +342,7 @@
   Jump                 L3
   PushConstant         CP#5
   PushStatic           CP#5
-  InstanceCall1        1, CP#9
+  InstanceCall         1, CP#9
   StoreStaticTOS       CP#0
 L3:
   PushConstant         CP#0
@@ -392,7 +392,7 @@
   Entry                0
   CheckStack
   Push                 FP[-5]
-  InstanceCall1        1, CP#1
+  InstanceCall         1, CP#1
   PushConstant         CP#2
   IndirectStaticCall   1, CP#0
   Drop1
@@ -470,7 +470,7 @@
   PushConstant         CP#0
   PushStatic           CP#0
   PushConstant         CP#1
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   AssertBoolean        0
   PushConstant         CP#4
   IfEqStrictTOS
@@ -478,7 +478,7 @@
   PushConstant         CP#0
   PushStatic           CP#0
   PushConstant         CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   AssertBoolean        0
   PopLocal             r1
   Jump                 L2
@@ -494,7 +494,7 @@
   PushConstant         CP#0
   PushStatic           CP#0
   PushConstant         CP#7
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#8
   AssertBoolean        0
   PopLocal             r0
   Jump                 L4
@@ -521,7 +521,7 @@
   PushStatic           CP#0
   PushConstant         CP#14
   IndirectStaticCall   2, CP#2
-  InstanceCall1        2, CP#15
+  InstanceCall         2, CP#15
   ReturnTOS
 L6:
   PushConstant         CP#13
diff --git a/pkg/vm/testcases/bytecode/closures.dart.expect b/pkg/vm/testcases/bytecode/closures.dart.expect
index cf90561..9fe4926 100644
--- a/pkg/vm/testcases/bytecode/closures.dart.expect
+++ b/pkg/vm/testcases/bytecode/closures.dart.expect
@@ -212,19 +212,22 @@
   Push                 r0
   StoreFieldTOS        CP#3
   Push                 r4
+  PushConstant         CP#41
+  StoreFieldTOS        CP#42
+  Push                 r4
   PushConstant         CP#0
-  StoreFieldTOS        CP#41
+  StoreFieldTOS        CP#44
   Push                 r4
   Push                 r1
   StoreFieldTOS        CP#1
   PopLocal             r3
-  PushConstant         CP#51
+  PushConstant         CP#54
   Push                 r3
-  InstanceCall1        2, CP#52
+  InstanceCall         2, CP#55
   Drop1
-  PushConstant         CP#53
+  PushConstant         CP#56
   Push                 r3
-  InstanceCall1        2, CP#54
+  InstanceCall         2, CP#57
   Drop1
   PushConstant         CP#18
   ReturnTOS
@@ -271,20 +274,23 @@
   [38] = Class dart.core::_Closure
   [39] = InstanceField dart.core::_Closure::_instantiator_type_arguments
   [40] = Reserved
-  [41] = InstanceField dart.core::_Closure::_function
-  [42] = Reserved
-  [43] = ICData target-name 'call', arg-desc CP#32
-  [44] = EndClosureFunctionScope
-  [45] = TypeArgs [#lib::C7, #lib::C8]
-  [46] = ArgDesc num-args 1, num-type-args 2, names []
-  [47] = ICData target-name 'call', arg-desc CP#46
-  [48] = TypeArgs [dart.core::List<#lib::C7>, dart.core::List<#lib::C8>]
-  [49] = ICData target-name 'call', arg-desc CP#46
-  [50] = EndClosureFunctionScope
-  [51] = TypeArgs [#lib::C5, #lib::C6]
-  [52] = ICData target-name 'call', arg-desc CP#46
-  [53] = TypeArgs [dart.core::List<#lib::C5>, dart.core::List<#lib::C6>]
-  [54] = ICData target-name 'call', arg-desc CP#46
+  [41] = EmptyTypeArguments
+  [42] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [43] = Reserved
+  [44] = InstanceField dart.core::_Closure::_function
+  [45] = Reserved
+  [46] = ICData target-name 'call', arg-desc CP#32
+  [47] = EndClosureFunctionScope
+  [48] = TypeArgs [#lib::C7, #lib::C8]
+  [49] = ArgDesc num-args 1, num-type-args 2, names []
+  [50] = ICData target-name 'call', arg-desc CP#49
+  [51] = TypeArgs [dart.core::List<#lib::C7>, dart.core::List<#lib::C8>]
+  [52] = ICData target-name 'call', arg-desc CP#49
+  [53] = EndClosureFunctionScope
+  [54] = TypeArgs [#lib::C5, #lib::C6]
+  [55] = ICData target-name 'call', arg-desc CP#49
+  [56] = TypeArgs [dart.core::List<#lib::C5>, dart.core::List<#lib::C6>]
+  [57] = ICData target-name 'call', arg-desc CP#49
 }
 Closure CP#12 {
   Entry                4
@@ -397,14 +403,17 @@
   Push                 r0
   StoreFieldTOS        CP#3
   Push                 r4
+  PushConstant         CP#41
+  StoreFieldTOS        CP#42
+  Push                 r4
   PushConstant         CP#12
-  StoreFieldTOS        CP#41
+  StoreFieldTOS        CP#44
   Push                 r4
   Push                 r1
   StoreFieldTOS        CP#1
   PopLocal             r3
   Push                 r3
-  InstanceCall1        1, CP#43
+  InstanceCall         1, CP#46
   Drop1
   PushConstant         CP#18
   ReturnTOS
@@ -437,19 +446,22 @@
   Push                 r0
   StoreFieldTOS        CP#3
   Push                 r4
+  PushConstant         CP#41
+  StoreFieldTOS        CP#42
+  Push                 r4
   PushConstant         CP#9
-  StoreFieldTOS        CP#41
+  StoreFieldTOS        CP#44
   Push                 r4
   Push                 r1
   StoreFieldTOS        CP#1
   PopLocal             r3
-  PushConstant         CP#45
-  Push                 r3
-  InstanceCall1        2, CP#47
-  Drop1
   PushConstant         CP#48
   Push                 r3
-  InstanceCall1        2, CP#49
+  InstanceCall         2, CP#50
+  Drop1
+  PushConstant         CP#51
+  Push                 r3
+  InstanceCall         2, CP#52
   Drop1
   PushConstant         CP#18
   ReturnTOS
@@ -530,27 +542,30 @@
   PushConstant         CP#6
   StoreFieldTOS        CP#25
   Push                 r4
+  PushConstant         CP#27
+  StoreFieldTOS        CP#28
+  Push                 r4
   PushConstant         CP#3
-  StoreFieldTOS        CP#27
+  StoreFieldTOS        CP#30
   Push                 r4
   Push                 r0
   StoreFieldTOS        CP#4
   PopLocal             r3
   Push                 r3
-  PushConstant         CP#32
-  InstanceCall1        2, CP#33
+  PushConstant         CP#35
+  InstanceCall         2, CP#36
   Drop1
   Push                 r3
-  PushConstant         CP#34
-  InstanceCall1        2, CP#35
+  PushConstant         CP#37
+  InstanceCall         2, CP#38
   Drop1
   Push                 r2
-  PushConstant         CP#36
+  PushConstant         CP#39
   IndirectStaticCall   1, CP#18
   Drop1
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#37
+  PushConstant         CP#40
   IndirectStaticCall   1, CP#18
   Drop1
   Push                 r0
@@ -558,7 +573,7 @@
   PopLocal             r0
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#38
+  PushConstant         CP#41
   IndirectStaticCall   1, CP#18
   Drop1
   Push                 r0
@@ -571,7 +586,7 @@
   StoreContextParent
   PopLocal             r0
   Push                 r0
-  PushConstant         CP#39
+  PushConstant         CP#42
   StoreContextVar      0
   Allocate             CP#22
   StoreLocal           r3
@@ -582,14 +597,17 @@
   PushConstant         CP#6
   StoreFieldTOS        CP#25
   Push                 r3
-  PushConstant         CP#40
-  StoreFieldTOS        CP#27
+  PushConstant         CP#27
+  StoreFieldTOS        CP#28
+  Push                 r3
+  PushConstant         CP#43
+  StoreFieldTOS        CP#30
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#4
   PopLocal             r2
   Push                 r2
-  InstanceCall1        1, CP#43
+  InstanceCall         1, CP#46
   Drop1
   Push                 r0
   LoadContextParent
@@ -625,23 +643,26 @@
   [24] = Reserved
   [25] = InstanceField dart.core::_Closure::_function_type_arguments
   [26] = Reserved
-  [27] = InstanceField dart.core::_Closure::_function
-  [28] = Reserved
-  [29] = ICData target-name 'call', arg-desc CP#18
-  [30] = StaticICData target 'dart.core::print', arg-desc CP#18
-  [31] = EndClosureFunctionScope
-  [32] = Int 10
-  [33] = ICData target-name 'call', arg-desc CP#10
-  [34] = Int 11
-  [35] = ICData target-name 'call', arg-desc CP#10
-  [36] = StaticICData target 'dart.core::print', arg-desc CP#18
-  [37] = StaticICData target 'dart.core::print', arg-desc CP#18
-  [38] = StaticICData target 'dart.core::print', arg-desc CP#18
-  [39] = Int 42
-  [40] = ClosureFunction <anonymous closure> () → dart.core::Null;
-  [41] = ICData set target-name 'foo', arg-desc CP#10
-  [42] = EndClosureFunctionScope
-  [43] = ICData target-name 'call', arg-desc CP#18
+  [27] = EmptyTypeArguments
+  [28] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [29] = Reserved
+  [30] = InstanceField dart.core::_Closure::_function
+  [31] = Reserved
+  [32] = ICData target-name 'call', arg-desc CP#18
+  [33] = StaticICData target 'dart.core::print', arg-desc CP#18
+  [34] = EndClosureFunctionScope
+  [35] = Int 10
+  [36] = ICData target-name 'call', arg-desc CP#10
+  [37] = Int 11
+  [38] = ICData target-name 'call', arg-desc CP#10
+  [39] = StaticICData target 'dart.core::print', arg-desc CP#18
+  [40] = StaticICData target 'dart.core::print', arg-desc CP#18
+  [41] = StaticICData target 'dart.core::print', arg-desc CP#18
+  [42] = Int 42
+  [43] = ClosureFunction <anonymous closure> () → dart.core::Null;
+  [44] = ICData set target-name 'foo', arg-desc CP#10
+  [45] = EndClosureFunctionScope
+  [46] = ICData target-name 'call', arg-desc CP#18
 }
 Closure CP#16 {
   Entry                3
@@ -658,7 +679,7 @@
   LoadContextParent
   LoadContextVar       0
   PushConstant         CP#1
-  InstanceCall1        2, CP#17
+  InstanceCall         2, CP#17
   StoreContextVar      0
   Push                 r0
   Push                 r0
@@ -667,11 +688,11 @@
   LoadContextParent
   LoadContextParent
   LoadContextVar       0
-  InstanceCall1        1, CP#19
+  InstanceCall         1, CP#19
   Push                 r0
   LoadContextParent
   LoadContextVar       0
-  InstanceCall1        2, CP#20
+  InstanceCall         2, CP#20
   StoreContextVar      0
   PushConstant         CP#6
   ReturnTOS
@@ -712,14 +733,14 @@
   Push                 r0
   LoadContextVar       0
   PushConstant         CP#0
-  InstanceCall1        2, CP#11
+  InstanceCall         2, CP#11
   StoreContextVar      0
   Push                 r0
   LoadContextParent
   LoadContextParent
   LoadContextVar       0
   PushConstant         CP#12
-  InstanceCall1        2, CP#13
+  InstanceCall         2, CP#13
   AssertBoolean        0
   PushConstant         CP#14
   IfNeStrictTOS
@@ -742,18 +763,21 @@
   PushConstant         CP#6
   StoreFieldTOS        CP#25
   Push                 r2
+  PushConstant         CP#27
+  StoreFieldTOS        CP#28
+  Push                 r2
   PushConstant         CP#16
-  StoreFieldTOS        CP#27
+  StoreFieldTOS        CP#30
   Push                 r2
   Push                 r0
   StoreFieldTOS        CP#4
   PopLocal             r3
   Push                 r3
-  InstanceCall1        1, CP#29
+  InstanceCall         1, CP#32
   Drop1
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#30
+  PushConstant         CP#33
   IndirectStaticCall   1, CP#18
   Drop1
   Push                 r0
@@ -765,7 +789,7 @@
 
 }
 
-Closure CP#40 {
+Closure CP#43 {
   Entry                3
   CheckStack
   Push                 FP[-5]
@@ -776,7 +800,7 @@
   LoadContextVar       0
   Push                 r0
   LoadContextVar       0
-  InstanceCall1        2, CP#41
+  InstanceCall         2, CP#44
   Drop1
   PushConstant         CP#6
   ReturnTOS
@@ -881,7 +905,7 @@
   Push                 r0
   LoadContextVar       0
   PushConstant         CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   AssertBoolean        0
   PushConstant         CP#7
   IfNeStrictTOS
@@ -896,12 +920,15 @@
   PushConstant         CP#12
   StoreFieldTOS        CP#17
   Push                 r3
+  PushConstant         CP#19
+  StoreFieldTOS        CP#20
+  Push                 r3
   PushConstant         CP#8
-  StoreFieldTOS        CP#19
+  StoreFieldTOS        CP#22
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#9
-  InstanceCall1        2, CP#21
+  InstanceCall         2, CP#24
   Drop1
   Push                 r4
   Allocate             CP#14
@@ -913,12 +940,15 @@
   PushConstant         CP#12
   StoreFieldTOS        CP#17
   Push                 r3
-  PushConstant         CP#22
-  StoreFieldTOS        CP#19
+  PushConstant         CP#19
+  StoreFieldTOS        CP#20
+  Push                 r3
+  PushConstant         CP#25
+  StoreFieldTOS        CP#22
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#9
-  InstanceCall1        2, CP#28
+  InstanceCall         2, CP#31
   Drop1
   Push                 r0
   CloneContext
@@ -926,8 +956,8 @@
   Push                 r0
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#29
-  InstanceCall1        2, CP#30
+  PushConstant         CP#32
+  InstanceCall         2, CP#33
   StoreLocal           r3
   StoreContextVar      0
   Push                 r3
@@ -963,18 +993,21 @@
   [16] = Reserved
   [17] = InstanceField dart.core::_Closure::_function_type_arguments
   [18] = Reserved
-  [19] = InstanceField dart.core::_Closure::_function
-  [20] = Reserved
-  [21] = ICData target-name 'add', arg-desc CP#2
-  [22] = ClosureFunction <anonymous closure> (dart.core::int ii) → dart.core::Null;
-  [23] = Type dart.core::int
-  [24] = String 'ii'
-  [25] = SubtypeTestCache
-  [26] = ICData target-name '+', arg-desc CP#2
-  [27] = EndClosureFunctionScope
-  [28] = ICData target-name 'add', arg-desc CP#2
-  [29] = Int 1
-  [30] = ICData target-name '+', arg-desc CP#2
+  [19] = EmptyTypeArguments
+  [20] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [21] = Reserved
+  [22] = InstanceField dart.core::_Closure::_function
+  [23] = Reserved
+  [24] = ICData target-name 'add', arg-desc CP#2
+  [25] = ClosureFunction <anonymous closure> (dart.core::int ii) → dart.core::Null;
+  [26] = Type dart.core::int
+  [27] = String 'ii'
+  [28] = SubtypeTestCache
+  [29] = ICData target-name '+', arg-desc CP#2
+  [30] = EndClosureFunctionScope
+  [31] = ICData target-name 'add', arg-desc CP#2
+  [32] = Int 1
+  [33] = ICData target-name '+', arg-desc CP#2
 }
 Closure CP#8 {
   Entry                2
@@ -987,14 +1020,14 @@
   Push                 r0
   LoadContextParent
   LoadContextVar       0
-  InstanceCall1        2, CP#11
+  InstanceCall         2, CP#11
   ReturnTOS
   PushConstant         CP#12
   ReturnTOS
 
 }
 
-Closure CP#22 {
+Closure CP#25 {
   Entry                3
   CheckStack
   Push                 FP[-6]
@@ -1003,16 +1036,16 @@
   Push                 FP[-5]
   PushConstant         CP#12
   PushConstant         CP#12
-  PushConstant         CP#23
-  PushConstant         CP#24
-  AssertAssignable     1, CP#25
+  PushConstant         CP#26
+  PushConstant         CP#27
+  AssertAssignable     1, CP#28
   Drop1
   Push                 r0
   Push                 FP[-5]
   Push                 r0
   LoadContextParent
   LoadContextVar       0
-  InstanceCall1        2, CP#26
+  InstanceCall         2, CP#29
   StoreContextVar      0
   PushConstant         CP#12
   ReturnTOS
@@ -1041,12 +1074,12 @@
   AssertAssignable     0, CP#3
   Drop1
   Push                 FP[-5]
-  InstanceCall1        1, CP#5
+  InstanceCall         1, CP#5
   PopLocal             r2
 L2:
   CheckStack
   Push                 r2
-  InstanceCall1        1, CP#6
+  InstanceCall         1, CP#6
   PushConstant         CP#7
   IfNeStrictTOS
   Jump                 L1
@@ -1058,7 +1091,7 @@
   PopLocal             r0
   Push                 r0
   Push                 r2
-  InstanceCall1        1, CP#8
+  InstanceCall         1, CP#8
   StoreContextVar      0
   Allocate             CP#16
   StoreLocal           r4
@@ -1069,18 +1102,21 @@
   PushConstant         CP#0
   StoreFieldTOS        CP#19
   Push                 r4
+  PushConstant         CP#21
+  StoreFieldTOS        CP#22
+  Push                 r4
   PushConstant         CP#9
-  StoreFieldTOS        CP#21
+  StoreFieldTOS        CP#24
   Push                 r4
   Push                 r0
   StoreFieldTOS        CP#10
   PopLocal             r3
   Push                 r3
-  InstanceCall1        1, CP#23
+  InstanceCall         1, CP#26
   Drop1
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#24
+  PushConstant         CP#27
   IndirectStaticCall   1, CP#4
   Drop1
   Push                 r0
@@ -1113,10 +1149,13 @@
   [18] = Reserved
   [19] = InstanceField dart.core::_Closure::_function_type_arguments
   [20] = Reserved
-  [21] = InstanceField dart.core::_Closure::_function
-  [22] = Reserved
-  [23] = ICData target-name 'call', arg-desc CP#4
-  [24] = StaticICData target 'dart.core::print', arg-desc CP#4
+  [21] = EmptyTypeArguments
+  [22] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [23] = Reserved
+  [24] = InstanceField dart.core::_Closure::_function
+  [25] = Reserved
+  [26] = ICData target-name 'call', arg-desc CP#4
+  [27] = StaticICData target 'dart.core::print', arg-desc CP#4
 }
 Closure CP#9 {
   Entry                3
@@ -1128,7 +1167,7 @@
   Push                 r0
   LoadContextVar       0
   PushConstant         CP#12
-  InstanceCall1        2, CP#14
+  InstanceCall         2, CP#14
   StoreContextVar      0
   PushConstant         CP#0
   ReturnTOS
@@ -1191,8 +1230,11 @@
   PushConstant         CP#1
   StoreFieldTOS        CP#12
   Push                 r2
+  PushConstant         CP#14
+  StoreFieldTOS        CP#15
+  Push                 r2
   PushConstant         CP#5
-  StoreFieldTOS        CP#14
+  StoreFieldTOS        CP#17
   Push                 r2
   Push                 r0
   StoreFieldTOS        CP#6
@@ -1215,8 +1257,11 @@
   [11] = Reserved
   [12] = InstanceField dart.core::_Closure::_function_type_arguments
   [13] = Reserved
-  [14] = InstanceField dart.core::_Closure::_function
-  [15] = Reserved
+  [14] = EmptyTypeArguments
+  [15] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [16] = Reserved
+  [17] = InstanceField dart.core::_Closure::_function
+  [18] = Reserved
 }
 Closure CP#5 {
   Entry                2
@@ -1257,15 +1302,18 @@
   PushConstant         CP#4
   StoreFieldTOS        CP#14
   Push                 r3
+  PushConstant         CP#16
+  StoreFieldTOS        CP#17
+  Push                 r3
   PushConstant         CP#1
-  StoreFieldTOS        CP#16
+  StoreFieldTOS        CP#19
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#2
   PopLocal             r2
   Push                 r2
-  PushConstant         CP#18
-  InstanceCall1        2, CP#19
+  PushConstant         CP#21
+  InstanceCall         2, CP#22
   Drop1
   Push                 r0
   LoadContextVar       0
@@ -1293,10 +1341,13 @@
   [13] = Reserved
   [14] = InstanceField dart.core::_Closure::_function_type_arguments
   [15] = Reserved
-  [16] = InstanceField dart.core::_Closure::_function
-  [17] = Reserved
-  [18] = Int 3
-  [19] = ICData target-name 'call', arg-desc CP#8
+  [16] = EmptyTypeArguments
+  [17] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [18] = Reserved
+  [19] = InstanceField dart.core::_Closure::_function
+  [20] = Reserved
+  [21] = Int 3
+  [22] = ICData target-name 'call', arg-desc CP#8
 }
 Closure CP#1 {
   Entry                3
@@ -1315,7 +1366,7 @@
   Push                 r0
   LoadContextVar       0
   Push                 FP[-5]
-  InstanceCall1        2, CP#9
+  InstanceCall         2, CP#9
   StoreContextVar      0
   PushConstant         CP#4
   ReturnTOS
@@ -1437,7 +1488,7 @@
   PushConstant         CP#4
   IndirectStaticCall   1, CP#3
   Drop1
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   Drop1
   PushConstant         CP#7
   PushConstant         CP#2
@@ -1448,7 +1499,7 @@
   PushConstant         CP#8
   IndirectStaticCall   1, CP#3
   Drop1
-  InstanceCall1        2, CP#9
+  InstanceCall         2, CP#9
   Drop1
   PushConstant         CP#7
   PushConstant         CP#10
@@ -1459,7 +1510,7 @@
   PushConstant         CP#11
   IndirectStaticCall   1, CP#3
   Drop1
-  InstanceCall1        2, CP#12
+  InstanceCall         2, CP#12
   Drop1
   PushConstant         CP#13
   ReturnTOS
@@ -1498,8 +1549,11 @@
   PushConstant         CP#9
   StoreFieldTOS        CP#3
   Push                 r3
+  PushConstant         CP#17
+  StoreFieldTOS        CP#18
+  Push                 r3
   PushConstant         CP#0
-  StoreFieldTOS        CP#17
+  StoreFieldTOS        CP#20
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#1
@@ -1508,8 +1562,8 @@
   PopLocal             r3
   Allocate             CP#14
   StoreLocal           r5
-  PushConstant         CP#19
-  StoreFieldTOS        CP#20
+  PushConstant         CP#22
+  StoreFieldTOS        CP#18
   Push                 r5
   Push                 r3
   LoadFieldTOS         CP#15
@@ -1520,8 +1574,8 @@
   StoreFieldTOS        CP#3
   Push                 r5
   Push                 r3
-  LoadFieldTOS         CP#17
-  StoreFieldTOS        CP#17
+  LoadFieldTOS         CP#20
+  StoreFieldTOS        CP#20
   Push                 r5
   Push                 r3
   LoadFieldTOS         CP#1
@@ -1551,11 +1605,12 @@
   [14] = Class dart.core::_Closure
   [15] = InstanceField dart.core::_Closure::_instantiator_type_arguments
   [16] = Reserved
-  [17] = InstanceField dart.core::_Closure::_function
-  [18] = Reserved
-  [19] = TypeArgs [dart.core::int]
-  [20] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [17] = EmptyTypeArguments
+  [18] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [19] = Reserved
+  [20] = InstanceField dart.core::_Closure::_function
   [21] = Reserved
+  [22] = TypeArgs [dart.core::int]
 }
 Closure CP#0 {
   Entry                3
diff --git a/pkg/vm/testcases/bytecode/field_initializers.dart.expect b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
index cb6efea..5e795aa 100644
--- a/pkg/vm/testcases/bytecode/field_initializers.dart.expect
+++ b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
@@ -16,30 +16,34 @@
   PushConstant         CP#0
   StoreFieldTOS        CP#1
   Push                 FP[-6]
-  Push                 FP[-5]
-  StoreFieldTOS        CP#3
+  PushConstant         CP#3
+  StoreFieldTOS        CP#4
   Push                 FP[-6]
-  PushConstant         CP#5
+  Push                 FP[-5]
   StoreFieldTOS        CP#6
   Push                 FP[-6]
-  PushConstant         CP#9
-  IndirectStaticCall   1, CP#8
-  Drop1
+  PushConstant         CP#8
+  StoreFieldTOS        CP#4
+  Push                 FP[-6]
   PushConstant         CP#10
+  IndirectStaticCall   1, CP#9
+  Drop1
+  PushConstant         CP#11
   ReturnTOS
 }
 ConstantPool {
   [0] = Int 42
   [1] = InstanceField #lib::A::foo3
   [2] = Reserved
-  [3] = InstanceField #lib::A::foo4
-  [4] = Reserved
-  [5] = Int 44
-  [6] = InstanceField #lib::A::foo5
+  [3] = Int 43
+  [4] = InstanceField #lib::A::foo5
+  [5] = Reserved
+  [6] = InstanceField #lib::A::foo4
   [7] = Reserved
-  [8] = ArgDesc num-args 1, num-type-args 0, names []
-  [9] = StaticICData target 'dart.core::Object::', arg-desc CP#8
-  [10] = Null
+  [8] = Int 44
+  [9] = ArgDesc num-args 1, num-type-args 0, names []
+  [10] = StaticICData target 'dart.core::Object::', arg-desc CP#9
+  [11] = Null
 }
 ]  constructor •(core::int foo4) → void
     : self::A::foo1 = null, self::A::foo4 = foo4, self::A::foo5 = 44, super core::Object::•()
@@ -52,34 +56,38 @@
   PushConstant         CP#0
   StoreFieldTOS        CP#1
   Push                 FP[-7]
+  PushConstant         CP#3
+  StoreFieldTOS        CP#4
+  Push                 FP[-7]
   Push                 FP[-6]
-  StoreFieldTOS        CP#3
+  StoreFieldTOS        CP#6
   Push                 FP[-7]
   Push                 FP[-5]
-  PushConstant         CP#5
-  InstanceCall1        2, CP#7
-  StoreFieldTOS        CP#8
+  PushConstant         CP#8
+  InstanceCall         2, CP#10
+  StoreFieldTOS        CP#4
   Push                 FP[-7]
-  PushConstant         CP#11
-  IndirectStaticCall   1, CP#10
-  Drop1
   PushConstant         CP#12
+  IndirectStaticCall   1, CP#11
+  Drop1
+  PushConstant         CP#13
   ReturnTOS
 }
 ConstantPool {
   [0] = Int 42
   [1] = InstanceField #lib::A::foo3
   [2] = Reserved
-  [3] = InstanceField #lib::A::foo1
-  [4] = Reserved
-  [5] = Int 1
-  [6] = ArgDesc num-args 2, num-type-args 0, names []
-  [7] = ICData target-name '+', arg-desc CP#6
-  [8] = InstanceField #lib::A::foo5
-  [9] = Reserved
-  [10] = ArgDesc num-args 1, num-type-args 0, names []
-  [11] = StaticICData target 'dart.core::Object::', arg-desc CP#10
-  [12] = Null
+  [3] = Int 43
+  [4] = InstanceField #lib::A::foo5
+  [5] = Reserved
+  [6] = InstanceField #lib::A::foo1
+  [7] = Reserved
+  [8] = Int 1
+  [9] = ArgDesc num-args 2, num-type-args 0, names []
+  [10] = ICData target-name '+', arg-desc CP#9
+  [11] = ArgDesc num-args 1, num-type-args 0, names []
+  [12] = StaticICData target 'dart.core::Object::', arg-desc CP#11
+  [13] = Null
 }
 ]  constructor constr2(core::int x, core::int y) → void
     : self::A::foo4 = null, self::A::foo1 = x, self::A::foo5 = y.{core::num::+}(1), super core::Object::•()
@@ -113,7 +121,7 @@
   Push                 FP[-7]
   Push                 FP[-6]
   Push                 FP[-5]
-  InstanceCall1        2, CP#1
+  InstanceCall         2, CP#1
   PushConstant         CP#3
   IndirectStaticCall   3, CP#2
   Drop1
@@ -170,23 +178,27 @@
   PushConstant         CP#0
   StoreFieldTOS        CP#1
   Push                 FP[-7]
+  PushConstant         CP#3
+  StoreFieldTOS        CP#1
+  Push                 FP[-7]
   Push                 FP[-6]
   Push                 FP[-5]
-  PushConstant         CP#3
-  PushConstant         CP#5
-  IndirectStaticCall   4, CP#4
-  Drop1
+  PushConstant         CP#4
   PushConstant         CP#6
+  IndirectStaticCall   4, CP#5
+  Drop1
+  PushConstant         CP#7
   ReturnTOS
 }
 ConstantPool {
-  [0] = Int 50
+  [0] = Int 46
   [1] = InstanceField #lib::B::foo6
   [2] = Reserved
-  [3] = Int 51
-  [4] = ArgDesc num-args 4, num-type-args 0, names []
-  [5] = StaticICData target '#lib::A::redirecting2', arg-desc CP#4
-  [6] = Null
+  [3] = Int 50
+  [4] = Int 51
+  [5] = ArgDesc num-args 4, num-type-args 0, names []
+  [6] = StaticICData target '#lib::A::redirecting2', arg-desc CP#5
+  [7] = Null
 }
 ]  constructor c2(core::int i, core::int j) → void
     : self::B::foo6 = 50, super self::A::redirecting2(i, j, 51)
diff --git a/pkg/vm/testcases/bytecode/instance_creation.dart b/pkg/vm/testcases/bytecode/instance_creation.dart
index 85ea5d71..05a745b 100644
--- a/pkg/vm/testcases/bytecode/instance_creation.dart
+++ b/pkg/vm/testcases/bytecode/instance_creation.dart
@@ -73,6 +73,12 @@
   factory J() native "agent_J";
 }
 
+abstract class K<A, B> {
+  factory K() => new TestTypeArgReuse<A, B>();
+}
+
+class TestTypeArgReuse<P, Q> extends Base<P, Q> implements K<P, Q> {}
+
 main() {
   foo1();
   foo2();
diff --git a/pkg/vm/testcases/bytecode/instance_creation.dart.expect b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
index b741c7e..be1eedc 100644
--- a/pkg/vm/testcases/bytecode/instance_creation.dart.expect
+++ b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
@@ -400,6 +400,53 @@
 ]  @_in::ExternalName::•("agent_J")
   external static factory •() → self::J;
 }
+abstract class K<A extends core::Object = dynamic, B extends core::Object = dynamic> extends core::Object {
+[@vm.bytecode=
+Bytecode {
+  Entry                1
+  CheckStack
+  Push                 FP[-5]
+  PushConstant         CP#0
+  AllocateT
+  StoreLocal           r0
+  Push                 r0
+  PushConstant         CP#2
+  IndirectStaticCall   1, CP#1
+  Drop1
+  ReturnTOS
+  PushConstant         CP#3
+  ReturnTOS
+}
+ConstantPool {
+  [0] = Class #lib::TestTypeArgReuse
+  [1] = ArgDesc num-args 1, num-type-args 0, names []
+  [2] = StaticICData target '#lib::TestTypeArgReuse::', arg-desc CP#1
+  [3] = Null
+}
+]  static factory •<A extends core::Object = dynamic, B extends core::Object = dynamic>() → self::K<self::K::•::A, self::K::•::B>
+    return new self::TestTypeArgReuse::•<self::K::•::A, self::K::•::B>();
+}
+class TestTypeArgReuse<P extends core::Object = dynamic, Q extends core::Object = dynamic> extends self::Base<self::TestTypeArgReuse::P, self::TestTypeArgReuse::Q> implements self::K<self::TestTypeArgReuse::P, self::TestTypeArgReuse::Q> {
+[@vm.bytecode=
+Bytecode {
+  Entry                0
+  CheckStack
+  Push                 FP[-5]
+  PushConstant         CP#1
+  IndirectStaticCall   1, CP#0
+  Drop1
+  PushConstant         CP#2
+  ReturnTOS
+}
+ConstantPool {
+  [0] = ArgDesc num-args 1, num-type-args 0, names []
+  [1] = StaticICData target '#lib::Base::', arg-desc CP#0
+  [2] = Null
+}
+]  synthetic constructor •() → void
+    : super self::Base::•()
+    ;
+}
 [@vm.bytecode=
 Bytecode {
   Entry                1
diff --git a/pkg/vm/testcases/bytecode/literals.dart.expect b/pkg/vm/testcases/bytecode/literals.dart.expect
index d533ada..1e7fbae 100644
--- a/pkg/vm/testcases/bytecode/literals.dart.expect
+++ b/pkg/vm/testcases/bytecode/literals.dart.expect
@@ -170,12 +170,12 @@
   Push                 FP[-8]
   Push                 FP[-7]
   Push                 FP[-6]
-  InstanceCall1        2, CP#1
+  InstanceCall         2, CP#1
   StoreFieldTOS        CP#2
   Push                 FP[-8]
   Push                 FP[-5]
   PushConstant         CP#4
-  InstanceCall1        2, CP#5
+  InstanceCall         2, CP#5
   PushConstant         CP#6
   IndirectStaticCall   2, CP#0
   Drop1
@@ -496,7 +496,7 @@
   Push                 r0
   PushConstant         CP#3
   Push                 FP[-5]
-  InstanceCall1        1, CP#11
+  InstanceCall         1, CP#11
   StoreIndexedTOS
   Push                 r0
   PushConstant         CP#4
@@ -579,7 +579,7 @@
   Push                 r1
   PushConstant         CP#5
   Push                 FP[-6]
-  InstanceCall1        1, CP#13
+  InstanceCall         1, CP#13
   StoreIndexedTOS
   Push                 r1
   PushConstant         CP#6
@@ -658,18 +658,19 @@
 Bytecode {
   Entry                0
   CheckStack
-  PushConstant         CP#0
   PushConstant         CP#2
-  IndirectStaticCall   1, CP#1
+  PushConstant         CP#4
+  IndirectStaticCall   1, CP#3
   Drop1
-  PushConstant         CP#3
+  PushConstant         CP#0
   ReturnTOS
 }
 ConstantPool {
-  [0] = Symbol 'test_symbol'
-  [1] = ArgDesc num-args 1, num-type-args 0, names []
-  [2] = StaticICData target 'dart.core::print', arg-desc CP#1
-  [3] = Null
+  [0] = Null
+  [1] = String 'test_symbol'
+  [2] = Instance dart._internal::Symbol type-args CP#0 {_name: CP#1}
+  [3] = ArgDesc num-args 1, num-type-args 0, names []
+  [4] = StaticICData target 'dart.core::print', arg-desc CP#3
 }
 ]static method test_symbol() → void {
   core::print(#test_symbol);
diff --git a/pkg/vm/testcases/bytecode/loops.dart.expect b/pkg/vm/testcases/bytecode/loops.dart.expect
index 17a68e1..4112fe8 100644
--- a/pkg/vm/testcases/bytecode/loops.dart.expect
+++ b/pkg/vm/testcases/bytecode/loops.dart.expect
@@ -14,8 +14,8 @@
   CheckStack
   Push                 r1
   Push                 FP[-5]
-  InstanceCall1        1, CP#2
-  InstanceCall1        2, CP#4
+  InstanceCall         1, CP#2
+  InstanceCall         2, CP#4
   AssertBoolean        0
   PushConstant         CP#5
   IfNeStrictTOS
@@ -23,12 +23,12 @@
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InstanceCall1        2, CP#6
-  InstanceCall1        2, CP#7
+  InstanceCall         2, CP#6
+  InstanceCall         2, CP#7
   PopLocal             r0
   Push                 r1
   PushConstant         CP#8
-  InstanceCall1        2, CP#9
+  InstanceCall         2, CP#9
   StoreLocal           r1
   Drop1
   Jump                 L2
@@ -70,15 +70,15 @@
   CheckStack
   Push                 r1
   PushConstant         CP#0
-  InstanceCall1        2, CP#2
+  InstanceCall         2, CP#2
   AssertBoolean        0
   PushConstant         CP#3
   IfNeStrictTOS
   Jump                 L1
   Push                 r1
   Push                 FP[-5]
-  InstanceCall1        1, CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         1, CP#5
+  InstanceCall         2, CP#6
   AssertBoolean        0
   PushConstant         CP#3
   IfNeStrictTOS
@@ -88,12 +88,12 @@
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InstanceCall1        2, CP#7
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#7
+  InstanceCall         2, CP#8
   PopLocal             r0
   Push                 r1
   PushConstant         CP#9
-  InstanceCall1        2, CP#10
+  InstanceCall         2, CP#10
   StoreLocal           r1
   Drop1
   Jump                 L3
@@ -135,21 +135,21 @@
   PushConstant         CP#0
   PopLocal             r0
   PushConstant         CP#1
-  InstanceCall1        1, CP#3
+  InstanceCall         1, CP#3
   PopLocal             r1
 L4:
   CheckStack
   Push                 r1
   Push                 FP[-5]
-  InstanceCall1        1, CP#4
-  InstanceCall1        2, CP#6
+  InstanceCall         1, CP#4
+  InstanceCall         2, CP#6
   AssertBoolean        0
   PushConstant         CP#7
   IfNeStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#0
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#8
   AssertBoolean        0
   PushConstant         CP#7
   IfNeStrictTOS
@@ -159,13 +159,13 @@
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InstanceCall1        2, CP#9
-  InstanceCall1        2, CP#10
+  InstanceCall         2, CP#9
+  InstanceCall         2, CP#10
   PopLocal             r0
 L3:
   Push                 r1
   PushConstant         CP#11
-  InstanceCall1        2, CP#12
+  InstanceCall         2, CP#12
   StoreLocal           r1
   Drop1
   Jump                 L4
@@ -215,8 +215,8 @@
   CheckStack
   Push                 r1
   Push                 FP[-5]
-  InstanceCall1        1, CP#2
-  InstanceCall1        2, CP#4
+  InstanceCall         1, CP#2
+  InstanceCall         2, CP#4
   AssertBoolean        0
   PushConstant         CP#5
   IfNeStrictTOS
@@ -227,12 +227,12 @@
   PopLocal             r2
   Push                 r2
   PushConstant         CP#6
-  InstanceCall1        2, CP#7
+  InstanceCall         2, CP#7
   StoreLocal           r1
   PopLocal             r3
   Push                 r2
-  InstanceCall1        2, CP#8
-  InstanceCall1        2, CP#9
+  InstanceCall         2, CP#8
+  InstanceCall         2, CP#9
   PopLocal             r0
   Jump                 L2
 L1:
@@ -275,17 +275,17 @@
   Push                 r0
   Push                 FP[-5]
   Push                 r1
-  InstanceCall1        2, CP#2
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#2
+  InstanceCall         2, CP#3
   PopLocal             r0
   Push                 r1
   PushConstant         CP#4
-  InstanceCall1        2, CP#5
+  InstanceCall         2, CP#5
   PopLocal             r1
   Push                 r1
   Push                 FP[-5]
-  InstanceCall1        1, CP#7
-  InstanceCall1        2, CP#8
+  InstanceCall         1, CP#7
+  InstanceCall         2, CP#8
   AssertBoolean        0
   PushConstant         CP#9
   IfEqStrictTOS
@@ -325,21 +325,21 @@
   PushConstant         CP#0
   PopLocal             r0
   Push                 FP[-5]
-  InstanceCall1        1, CP#2
+  InstanceCall         1, CP#2
   PopLocal             r1
 L2:
   CheckStack
   Push                 r1
-  InstanceCall1        1, CP#3
+  InstanceCall         1, CP#3
   PushConstant         CP#4
   IfNeStrictTOS
   Jump                 L1
   Push                 r1
-  InstanceCall1        1, CP#5
+  InstanceCall         1, CP#5
   PopLocal             r2
   Push                 r0
   Push                 r2
-  InstanceCall1        2, CP#7
+  InstanceCall         2, CP#7
   PopLocal             r0
   Jump                 L2
 L1:
@@ -375,23 +375,23 @@
   PushConstant         CP#1
   PopLocal             r1
   Push                 FP[-5]
-  InstanceCall1        1, CP#3
+  InstanceCall         1, CP#3
   PopLocal             r2
 L2:
   CheckStack
   Push                 r2
-  InstanceCall1        1, CP#4
+  InstanceCall         1, CP#4
   PushConstant         CP#5
   IfNeStrictTOS
   Jump                 L1
   Push                 r2
-  InstanceCall1        1, CP#6
+  InstanceCall         1, CP#6
   PopLocal             r3
   Push                 r3
   PopLocal             r1
   Push                 r0
   Push                 r1
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#8
   PopLocal             r0
   Jump                 L2
 L1:
diff --git a/pkg/vm/testcases/bytecode/super_calls.dart.expect b/pkg/vm/testcases/bytecode/super_calls.dart.expect
index 90ddf06..d0e8cf4 100644
--- a/pkg/vm/testcases/bytecode/super_calls.dart.expect
+++ b/pkg/vm/testcases/bytecode/super_calls.dart.expect
@@ -190,7 +190,7 @@
   PushConstant         CP#2
   IndirectStaticCall   1, CP#1
   PushConstant         CP#3
-  InstanceCall1        3, CP#5
+  InstanceCall         3, CP#5
   ReturnTOS
   PushConstant         CP#6
   ReturnTOS
@@ -444,7 +444,7 @@
   PushConstant         CP#10
   IndirectStaticCall   2, CP#9
   PushConstant         CP#11
-  InstanceCall1        3, CP#13
+  InstanceCall         3, CP#13
   ReturnTOS
   PushConstant         CP#14
   ReturnTOS
diff --git a/pkg/vm/testcases/bytecode/switch.dart.expect b/pkg/vm/testcases/bytecode/switch.dart.expect
index a7d303b..ed998c2 100644
--- a/pkg/vm/testcases/bytecode/switch.dart.expect
+++ b/pkg/vm/testcases/bytecode/switch.dart.expect
@@ -12,19 +12,19 @@
   PopLocal             r1
   Push                 r1
   PushConstant         CP#2
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
   Push                 r1
   PushConstant         CP#7
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#8
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L3
@@ -96,37 +96,37 @@
   PopLocal             r1
   Push                 r1
   PushConstant         CP#2
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#7
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#8
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#9
-  InstanceCall1        2, CP#10
+  InstanceCall         2, CP#10
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
   Push                 r1
   PushConstant         CP#11
-  InstanceCall1        2, CP#12
+  InstanceCall         2, CP#12
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
   Push                 r1
   PushConstant         CP#13
-  InstanceCall1        2, CP#14
+  InstanceCall         2, CP#14
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
@@ -206,37 +206,37 @@
   PopLocal             r1
   Push                 r1
   PushConstant         CP#2
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#7
-  InstanceCall1        2, CP#8
+  InstanceCall         2, CP#8
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L1
   Push                 r1
   PushConstant         CP#9
-  InstanceCall1        2, CP#10
+  InstanceCall         2, CP#10
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
   Push                 r1
   PushConstant         CP#11
-  InstanceCall1        2, CP#12
+  InstanceCall         2, CP#12
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
   Push                 r1
   PushConstant         CP#13
-  InstanceCall1        2, CP#14
+  InstanceCall         2, CP#14
   PushConstant         CP#4
   IfEqStrictTOS
   Jump                 L2
diff --git a/pkg/vm/testcases/bytecode/try_blocks.dart.expect b/pkg/vm/testcases/bytecode/try_blocks.dart.expect
index c0fd1bb..58275a3 100644
--- a/pkg/vm/testcases/bytecode/try_blocks.dart.expect
+++ b/pkg/vm/testcases/bytecode/try_blocks.dart.expect
@@ -82,7 +82,7 @@
   PushConstant         CP#4
   PushConstant         CP#4
   PushConstant         CP#3
-  InstanceCall1        4, CP#6
+  InstanceCall         4, CP#6
   PushConstant         CP#7
   IfNeStrictTOS
   Jump                 L2
@@ -96,7 +96,7 @@
   PushConstant         CP#4
   PushConstant         CP#4
   PushConstant         CP#10
-  InstanceCall1        4, CP#11
+  InstanceCall         4, CP#11
   PushConstant         CP#7
   IfNeStrictTOS
   Jump                 L3
@@ -125,7 +125,7 @@
   PushConstant         CP#4
   PushConstant         CP#4
   PushConstant         CP#18
-  InstanceCall1        4, CP#19
+  InstanceCall         4, CP#19
   PushConstant         CP#7
   IfNeStrictTOS
   Jump                 L4
@@ -280,18 +280,21 @@
   PushConstant         CP#11
   StoreFieldTOS        CP#16
   Push                 r5
+  PushConstant         CP#18
+  StoreFieldTOS        CP#19
+  Push                 r5
   PushConstant         CP#2
-  StoreFieldTOS        CP#18
+  StoreFieldTOS        CP#21
   Push                 r5
   Push                 r0
   StoreFieldTOS        CP#3
   PopLocal             r4
   Push                 r4
-  InstanceCall1        1, CP#20
+  InstanceCall         1, CP#23
   Drop1
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#21
+  PushConstant         CP#24
   IndirectStaticCall   1, CP#6
   Drop1
   Push                 r0
@@ -316,12 +319,12 @@
   Push                 r3
   StoreContextVar      0
   PushConstant         CP#11
-  PushConstant         CP#22
+  PushConstant         CP#25
   CreateArrayTOS
   StoreLocal           r5
   Push                 r5
-  PushConstant         CP#23
-  PushConstant         CP#24
+  PushConstant         CP#26
+  PushConstant         CP#27
   StoreIndexedTOS
   Push                 r5
   PushConstant         CP#0
@@ -329,16 +332,16 @@
   StoreIndexedTOS
   Push                 r5
   PushConstant         CP#1
-  PushConstant         CP#25
+  PushConstant         CP#28
   StoreIndexedTOS
   Push                 r5
   PushConstant         CP#10
   Push                 r0
   LoadContextVar       0
   StoreIndexedTOS
-  PushConstant         CP#26
+  PushConstant         CP#29
   IndirectStaticCall   1, CP#6
-  PushConstant         CP#27
+  PushConstant         CP#30
   IndirectStaticCall   1, CP#6
   Drop1
   Allocate             CP#13
@@ -350,8 +353,11 @@
   PushConstant         CP#11
   StoreFieldTOS        CP#16
   Push                 r5
-  PushConstant         CP#28
-  StoreFieldTOS        CP#18
+  PushConstant         CP#18
+  StoreFieldTOS        CP#19
+  Push                 r5
+  PushConstant         CP#31
+  StoreFieldTOS        CP#21
   Push                 r5
   Push                 r0
   StoreFieldTOS        CP#3
@@ -370,7 +376,7 @@
   ReturnTOS
 }
 ExceptionsTable {
-  try-index 0, outer -1, start 13, end 49, handler 49, needs-stack-trace, types [CP#8]
+  try-index 0, outer -1, start 13, end 52, handler 52, needs-stack-trace, types [CP#8]
 }
 ConstantPool {
   [0] = Int 1
@@ -391,28 +397,31 @@
   [15] = Reserved
   [16] = InstanceField dart.core::_Closure::_function_type_arguments
   [17] = Reserved
-  [18] = InstanceField dart.core::_Closure::_function
-  [19] = Reserved
-  [20] = ICData target-name 'call', arg-desc CP#6
-  [21] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [22] = Int 4
-  [23] = Int 0
-  [24] = String 'caught '
-  [25] = String ' '
-  [26] = StaticICData target 'dart.core::_StringBase::_interpolate', arg-desc CP#6
-  [27] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [28] = ClosureFunction bar () → void;
-  [29] = String 'danger bar'
+  [18] = EmptyTypeArguments
+  [19] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [20] = Reserved
+  [21] = InstanceField dart.core::_Closure::_function
+  [22] = Reserved
+  [23] = ICData target-name 'call', arg-desc CP#6
+  [24] = StaticICData target 'dart.core::print', arg-desc CP#6
+  [25] = Int 4
+  [26] = Int 0
+  [27] = String 'caught '
+  [28] = String ' '
+  [29] = StaticICData target 'dart.core::_StringBase::_interpolate', arg-desc CP#6
   [30] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [31] = Type dart.core::Error
-  [32] = ArgDesc num-args 4, num-type-args 0, names []
-  [33] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#32
-  [34] = Bool true
-  [35] = String 'error '
-  [36] = String ', captured stack trace: '
-  [37] = StaticICData target 'dart.core::_StringBase::_interpolate', arg-desc CP#6
-  [38] = StaticICData target 'dart.core::print', arg-desc CP#6
-  [39] = EndClosureFunctionScope
+  [31] = ClosureFunction bar () → void;
+  [32] = String 'danger bar'
+  [33] = StaticICData target 'dart.core::print', arg-desc CP#6
+  [34] = Type dart.core::Error
+  [35] = ArgDesc num-args 4, num-type-args 0, names []
+  [36] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#35
+  [37] = Bool true
+  [38] = String 'error '
+  [39] = String ', captured stack trace: '
+  [40] = StaticICData target 'dart.core::_StringBase::_interpolate', arg-desc CP#6
+  [41] = StaticICData target 'dart.core::print', arg-desc CP#6
+  [42] = EndClosureFunctionScope
 }
 Closure CP#2 {
   Entry                6
@@ -452,7 +461,7 @@
 
 }
 
-Closure CP#28 {
+Closure CP#31 {
   Entry                6
   CheckStack
   Push                 FP[-5]
@@ -461,8 +470,8 @@
   Push                 r0
   PopLocal             r2
 Try #0 start:
-  PushConstant         CP#29
-  PushConstant         CP#30
+  PushConstant         CP#32
+  PushConstant         CP#33
   IndirectStaticCall   1, CP#6
   Drop1
   Jump                 L1
@@ -475,20 +484,20 @@
   Push                 r2
   PushConstant         CP#11
   PushConstant         CP#11
-  PushConstant         CP#31
-  InstanceCall1        4, CP#33
   PushConstant         CP#34
+  InstanceCall         4, CP#36
+  PushConstant         CP#37
   IfNeStrictTOS
   Jump                 L2
   Push                 r2
   PopLocal             r4
   PushConstant         CP#11
-  PushConstant         CP#22
+  PushConstant         CP#25
   CreateArrayTOS
   StoreLocal           r5
   Push                 r5
-  PushConstant         CP#23
-  PushConstant         CP#35
+  PushConstant         CP#26
+  PushConstant         CP#38
   StoreIndexedTOS
   Push                 r5
   PushConstant         CP#0
@@ -496,16 +505,16 @@
   StoreIndexedTOS
   Push                 r5
   PushConstant         CP#1
-  PushConstant         CP#36
+  PushConstant         CP#39
   StoreIndexedTOS
   Push                 r5
   PushConstant         CP#10
   Push                 r0
   LoadContextVar       0
   StoreIndexedTOS
-  PushConstant         CP#37
+  PushConstant         CP#40
   IndirectStaticCall   1, CP#6
-  PushConstant         CP#38
+  PushConstant         CP#41
   IndirectStaticCall   1, CP#6
   Drop1
   Jump                 L1
@@ -668,7 +677,7 @@
   CheckStack
   Push                 r0
   PushConstant         CP#1
-  InstanceCall1        2, CP#3
+  InstanceCall         2, CP#3
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -676,7 +685,7 @@
 Try #0 start:
   Push                 r0
   PushConstant         CP#5
-  InstanceCall1        2, CP#6
+  InstanceCall         2, CP#6
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -708,7 +717,7 @@
   Drop1
   Push                 r0
   PushConstant         CP#12
-  InstanceCall1        2, CP#13
+  InstanceCall         2, CP#13
   StoreLocal           r0
   Drop1
   Jump                 L5
@@ -763,13 +772,13 @@
   PopLocal             r2
   Push                 r2
   PushConstant         CP#1
-  InstanceCall1        2, CP#2
+  InstanceCall         2, CP#2
   PushConstant         CP#3
   IfEqStrictTOS
   Jump                 L1
   Push                 r2
   PushConstant         CP#4
-  InstanceCall1        2, CP#5
+  InstanceCall         2, CP#5
   PushConstant         CP#3
   IfEqStrictTOS
   Jump                 L2
@@ -807,14 +816,17 @@
   PushConstant         CP#17
   StoreFieldTOS        CP#22
   Push                 r8
+  PushConstant         CP#24
+  StoreFieldTOS        CP#25
+  Push                 r8
   PushConstant         CP#12
-  StoreFieldTOS        CP#24
+  StoreFieldTOS        CP#27
   Push                 r8
   Push                 r0
   StoreFieldTOS        CP#13
   PopLocal             r7
   Push                 r7
-  InstanceCall1        1, CP#26
+  InstanceCall         1, CP#29
   Drop1
   Jump                 L4
   Jump                 L5
@@ -824,8 +836,8 @@
   PopLocal             r0
   MoveSpecial          r5, exception
   MoveSpecial          r6, stackTrace
-  PushConstant         CP#28
-  PushConstant         CP#29
+  PushConstant         CP#31
+  PushConstant         CP#32
   IndirectStaticCall   1, CP#7
   Drop1
   Push                 r5
@@ -834,20 +846,20 @@
 L4:
   Push                 r5
   PopLocal             r0
-  PushConstant         CP#28
-  PushConstant         CP#30
+  PushConstant         CP#31
+  PushConstant         CP#33
   IndirectStaticCall   1, CP#7
   Drop1
   Jump                 L6
 L5:
   Push                 r5
   PopLocal             r0
-  PushConstant         CP#28
   PushConstant         CP#31
+  PushConstant         CP#34
   IndirectStaticCall   1, CP#7
   Drop1
-  PushConstant         CP#32
-  PushConstant         CP#33
+  PushConstant         CP#35
+  PushConstant         CP#36
   IndirectStaticCall   1, CP#7
   Drop1
   Push                 r0
@@ -860,8 +872,8 @@
   PopLocal             r0
   MoveSpecial          r3, exception
   MoveSpecial          r4, stackTrace
-  PushConstant         CP#34
-  PushConstant         CP#35
+  PushConstant         CP#37
+  PushConstant         CP#38
   IndirectStaticCall   1, CP#7
   Drop1
   Push                 r3
@@ -870,22 +882,22 @@
 L6:
   Push                 r3
   PopLocal             r0
-  PushConstant         CP#34
-  PushConstant         CP#36
+  PushConstant         CP#37
+  PushConstant         CP#39
   IndirectStaticCall   1, CP#7
   Drop1
   Jump                 L2
 L7:
   Push                 r3
   PopLocal             r0
-  PushConstant         CP#34
   PushConstant         CP#37
+  PushConstant         CP#40
   IndirectStaticCall   1, CP#7
   Drop1
   Jump                 L3
 L2:
-  PushConstant         CP#38
-  PushConstant         CP#39
+  PushConstant         CP#41
+  PushConstant         CP#42
   IndirectStaticCall   1, CP#7
   Drop1
   Jump                 L3
@@ -894,8 +906,8 @@
   ReturnTOS
 }
 ExceptionsTable {
-  try-index 0, outer -1, start 25, end 96, handler 96, needs-stack-trace, types [CP#27]
-  try-index 1, outer 0, start 40, end 64, handler 64, needs-stack-trace, types [CP#27]
+  try-index 0, outer -1, start 25, end 99, handler 99, needs-stack-trace, types [CP#30]
+  try-index 1, outer 0, start 40, end 67, handler 67, needs-stack-trace, types [CP#30]
 }
 ConstantPool {
   [0] = ArgDesc num-args 2, num-type-args 0, names []
@@ -922,22 +934,25 @@
   [21] = Reserved
   [22] = InstanceField dart.core::_Closure::_function_type_arguments
   [23] = Reserved
-  [24] = InstanceField dart.core::_Closure::_function
-  [25] = Reserved
-  [26] = ICData target-name 'call', arg-desc CP#7
-  [27] = Type dynamic
-  [28] = String 'finally 1'
-  [29] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [30] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [31] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [32] = String 'after try 1'
+  [24] = EmptyTypeArguments
+  [25] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [26] = Reserved
+  [27] = InstanceField dart.core::_Closure::_function
+  [28] = Reserved
+  [29] = ICData target-name 'call', arg-desc CP#7
+  [30] = Type dynamic
+  [31] = String 'finally 1'
+  [32] = StaticICData target 'dart.core::print', arg-desc CP#7
   [33] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [34] = String 'finally 2'
-  [35] = StaticICData target 'dart.core::print', arg-desc CP#7
+  [34] = StaticICData target 'dart.core::print', arg-desc CP#7
+  [35] = String 'after try 1'
   [36] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [37] = StaticICData target 'dart.core::print', arg-desc CP#7
-  [38] = String 'case 2'
+  [37] = String 'finally 2'
+  [38] = StaticICData target 'dart.core::print', arg-desc CP#7
   [39] = StaticICData target 'dart.core::print', arg-desc CP#7
+  [40] = StaticICData target 'dart.core::print', arg-desc CP#7
+  [41] = String 'case 2'
+  [42] = StaticICData target 'dart.core::print', arg-desc CP#7
 }
 Closure CP#12 {
   Entry                2
@@ -1023,8 +1038,11 @@
   PushConstant         CP#1
   StoreFieldTOS        CP#29
   Push                 r5
+  PushConstant         CP#31
+  StoreFieldTOS        CP#32
+  Push                 r5
   PushConstant         CP#2
-  StoreFieldTOS        CP#31
+  StoreFieldTOS        CP#34
   Push                 r5
   Push                 r0
   StoreFieldTOS        CP#3
@@ -1038,11 +1056,11 @@
   MoveSpecial          r4, stackTrace
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#33
+  PushConstant         CP#36
   IndirectStaticCall   1, CP#5
   Drop1
   Push                 r2
-  InstanceCall1        1, CP#34
+  InstanceCall         1, CP#37
   Drop1
   Push                 r3
   Push                 r4
@@ -1052,11 +1070,11 @@
   PopLocal             r0
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#35
+  PushConstant         CP#38
   IndirectStaticCall   1, CP#5
   Drop1
   Push                 r2
-  InstanceCall1        1, CP#36
+  InstanceCall         1, CP#39
   Drop1
   Push                 r0
   LoadContextParent
@@ -1065,7 +1083,7 @@
   ReturnTOS
 }
 ExceptionsTable {
-  try-index 0, outer -1, start 15, end 31, handler 31, needs-stack-trace, types [CP#10]
+  try-index 0, outer -1, start 15, end 34, handler 34, needs-stack-trace, types [CP#10]
 }
 ConstantPool {
   [0] = Int 11
@@ -1099,12 +1117,15 @@
   [28] = Reserved
   [29] = InstanceField dart.core::_Closure::_function_type_arguments
   [30] = Reserved
-  [31] = InstanceField dart.core::_Closure::_function
-  [32] = Reserved
-  [33] = StaticICData target 'dart.core::print', arg-desc CP#5
-  [34] = ICData target-name 'call', arg-desc CP#5
-  [35] = StaticICData target 'dart.core::print', arg-desc CP#5
-  [36] = ICData target-name 'call', arg-desc CP#5
+  [31] = EmptyTypeArguments
+  [32] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [33] = Reserved
+  [34] = InstanceField dart.core::_Closure::_function
+  [35] = Reserved
+  [36] = StaticICData target 'dart.core::print', arg-desc CP#5
+  [37] = ICData target-name 'call', arg-desc CP#5
+  [38] = StaticICData target 'dart.core::print', arg-desc CP#5
+  [39] = ICData target-name 'call', arg-desc CP#5
 }
 Closure CP#2 {
   Entry                6
diff --git a/pkg/vm/testcases/bytecode/type_ops.dart.expect b/pkg/vm/testcases/bytecode/type_ops.dart.expect
index bf04a31..c0628ce 100644
--- a/pkg/vm/testcases/bytecode/type_ops.dart.expect
+++ b/pkg/vm/testcases/bytecode/type_ops.dart.expect
@@ -110,7 +110,7 @@
   LoadTypeArgumentsField CP#0
   PushConstant         CP#1
   PushConstant         CP#2
-  InstanceCall1        4, CP#4
+  InstanceCall         4, CP#4
   AssertBoolean        0
   PushConstant         CP#5
   IfNeStrictTOS
@@ -125,7 +125,7 @@
   LoadTypeArgumentsField CP#0
   PushConstant         CP#1
   PushConstant         CP#9
-  InstanceCall1        4, CP#10
+  InstanceCall         4, CP#10
   AssertBoolean        0
   PushConstant         CP#5
   IfNeStrictTOS
@@ -143,7 +143,7 @@
   PushConstant         CP#13
   PushConstant         CP#14
   AssertAssignable     0, CP#15
-  InstanceCall1        2, CP#17
+  InstanceCall         2, CP#17
   Drop1
   PushConstant         CP#1
   ReturnTOS
@@ -186,7 +186,7 @@
   PushConstant         CP#0
   Push                 r0
   PushConstant         CP#1
-  InstanceCall1        4, CP#3
+  InstanceCall         4, CP#3
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -201,7 +201,7 @@
   LoadTypeArgumentsField CP#8
   Push                 r0
   PushConstant         CP#9
-  InstanceCall1        4, CP#10
+  InstanceCall         4, CP#10
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -216,8 +216,8 @@
   LoadTypeArgumentsField CP#8
   Push                 r0
   PushConstant         CP#13
-  InstanceCall1        4, CP#14
-  InstanceCall1        1, CP#15
+  InstanceCall         4, CP#14
+  InstanceCall         1, CP#15
   ReturnTOS
   PushConstant         CP#0
   ReturnTOS
@@ -371,7 +371,7 @@
   PushConstant         CP#0
   PushConstant         CP#0
   PushConstant         CP#1
-  InstanceCall1        4, CP#3
+  InstanceCall         4, CP#3
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -385,7 +385,7 @@
   PushConstant         CP#0
   PushConstant         CP#0
   PushConstant         CP#8
-  InstanceCall1        4, CP#9
+  InstanceCall         4, CP#9
   AssertBoolean        0
   PushConstant         CP#4
   IfNeStrictTOS
@@ -399,7 +399,7 @@
   PushConstant         CP#0
   PushConstant         CP#0
   PushConstant         CP#12
-  InstanceCall1        4, CP#13
+  InstanceCall         4, CP#13
   ReturnTOS
   PushConstant         CP#0
   ReturnTOS
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect
index 925603f..fde6a80 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/annotation.dart.expect
@@ -37,7 +37,7 @@
 }
 static method foo([@vm.inferred-type.metadata=dart.core::Null?] (core::List<core::int>) → void a) → core::int {
   @self::VarAnnotation::•() core::int x = 2;
-  return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] x.{core::num::+}(2);
+  return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] [@vm.inferred-type.metadata=int?] x.{core::num::+}(2);
 }
 @self::ParametrizedAnnotation::•<core::Null>(null)
 static method main(core::List<core::String> args) → dynamic {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart
new file mode 100644
index 0000000..f7a9da8
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart
@@ -0,0 +1,35 @@
+bool isPrime(var n) {
+  if (n < 2) return false;
+  for (var i = 2; i * i <= n; i++) {
+    if (n % i == 0) return false;
+  }
+  return true;
+}
+
+int nThPrimeNumber(int n) {
+  int counter = 0;
+  for (var i = 1;; i++) {
+    if (isPrime(i)) counter++;
+    if (counter == n) {
+      return i;
+    }
+  }
+}
+
+void run() {
+  int e = 611953;
+  int p = nThPrimeNumber(50000);
+  if (p != e) {
+    throw Exception("Unexpected result: $p != $e");
+  }
+}
+
+main(List<String> args) {
+  Stopwatch timer = new Stopwatch()..start();
+  for (int i = 0; i < 100; ++i) {
+    run();
+  }
+  timer.stop();
+
+  print("Elapsed ${timer.elapsedMilliseconds}ms");
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
new file mode 100644
index 0000000..46769b4
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect
@@ -0,0 +1,38 @@
+library #lib;
+import self as self;
+import "dart:core" as core;
+
+static method isPrime([@vm.inferred-type.metadata=int?] dynamic n) → core::bool {
+  if([@vm.direct-call.metadata=dart.core::_IntegerImplementation::<??] [@vm.inferred-type.metadata=dart.core::bool] n.<(2) as{TypeError} core::bool)
+    return false;
+  for (core::int i = 2; [@vm.direct-call.metadata=dart.core::_IntegerImplementation::<=??] [@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::_IntegerImplementation::*??] [@vm.inferred-type.metadata=int?] i.{core::num::*}(i).{core::num::<=}(n as{TypeError} core::num); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] i.{core::num::+}(1)) {
+    if([@vm.inferred-type.metadata=dart.core::bool] [@vm.direct-call.metadata=dart.core::_IntegerImplementation::%??] [@vm.inferred-type.metadata=int?] n.%(i).{core::Object::==}(0))
+      return false;
+  }
+  return true;
+}
+static method nThPrimeNumber([@vm.inferred-type.metadata=int] core::int n) → core::int {
+  core::int counter = 0;
+  for (core::int i = 1; ; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] i.{core::num::+}(1)) {
+    if([@vm.inferred-type.metadata=dart.core::bool] self::isPrime(i))
+      counter = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] counter.{core::num::+}(1);
+    if([@vm.inferred-type.metadata=dart.core::bool] counter.{core::num::==}(n)) {
+      return i;
+    }
+  }
+}
+static method run() → void {
+  core::int e = 611953;
+  core::int p = [@vm.inferred-type.metadata=int?] self::nThPrimeNumber(50000);
+  if(![@vm.inferred-type.metadata=dart.core::bool] p.{core::num::==}(e)) {
+    throw core::Exception::•("Unexpected result: ${p} != ${e}");
+  }
+}
+static method main(core::List<core::String> args) → dynamic {
+  core::Stopwatch timer = let final core::Stopwatch #t1 = new core::Stopwatch::•() in let final dynamic #t2 = [@vm.direct-call.metadata=dart.core::Stopwatch::start] #t1.{core::Stopwatch::start}() in #t1;
+  for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation::<??] [@vm.inferred-type.metadata=dart.core::bool] i.{core::num::<}(100); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] i.{core::num::+}(1)) {
+    self::run();
+  }
+  [@vm.direct-call.metadata=dart.core::Stopwatch::stop] timer.{core::Stopwatch::stop}();
+  core::print("Elapsed ${[@vm.direct-call.metadata=dart.core::Stopwatch::elapsedMilliseconds] timer.{core::Stopwatch::elapsedMilliseconds}}ms");
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
index 3b702f1..e158e50 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect
@@ -4,20 +4,20 @@
 import "dart:typed_data" as typ;
 
 class _Vector extends core::Object {
-[@vm.inferred-type.metadata=!]  final field core::int _offset;
-[@vm.inferred-type.metadata=!]  final field core::int _length;
+[@vm.inferred-type.metadata=int]  final field core::int _offset;
+[@vm.inferred-type.metadata=int]  final field core::int _length;
 [@vm.inferred-type.metadata=dart.typed_data::_Float64List]  final field core::List<core::double> _elements;
-  constructor •([@vm.inferred-type.metadata=!] core::int size) → void
+  constructor •([@vm.inferred-type.metadata=int] core::int size) → void
     : self::_Vector::_offset = 0, self::_Vector::_length = size, self::_Vector::_elements = [@vm.inferred-type.metadata=dart.typed_data::_Float64List] typ::Float64List::•(size), super core::Object::•()
     ;
   operator [](core::int i) → core::double
-    return [@vm.direct-call.metadata=dart.typed_data::_Float64List::[]] [@vm.inferred-type.metadata=dart.core::_Double] [@vm.direct-call.metadata=#lib::_Vector::_elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}.{core::List::[]}([@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] i.{core::num::+}([@vm.direct-call.metadata=#lib::_Vector::_offset] [@vm.inferred-type.metadata=!] this.{self::_Vector::_offset}));
+    return [@vm.direct-call.metadata=dart.typed_data::_Float64List::[]] [@vm.inferred-type.metadata=dart.core::_Double] [@vm.direct-call.metadata=#lib::_Vector::_elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}.{core::List::[]}([@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] i.{core::num::+}([@vm.direct-call.metadata=#lib::_Vector::_offset] [@vm.inferred-type.metadata=int] this.{self::_Vector::_offset}));
   operator []=([@vm.inferred-type.metadata=!] core::int i, core::double value) → void {
-    let dynamic #t1 = [@vm.direct-call.metadata=#lib::_Vector::_elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements} in let dynamic #t2 = i in let dynamic #t3 = [@vm.direct-call.metadata=#lib::_Vector::_offset] [@vm.inferred-type.metadata=!] this.{self::_Vector::_offset} in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
+    let dynamic #t1 = [@vm.direct-call.metadata=#lib::_Vector::_elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements} in let dynamic #t2 = i in let dynamic #t3 = [@vm.direct-call.metadata=#lib::_Vector::_offset] [@vm.inferred-type.metadata=int] this.{self::_Vector::_offset} in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
   }
   operator *([@vm.inferred-type.metadata=#lib::_Vector?] self::_Vector a) → core::double {
     core::double result = 0.0;
-    for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation::<??] [@vm.inferred-type.metadata=dart.core::bool] i.{core::num::<}([@vm.direct-call.metadata=#lib::_Vector::_length] [@vm.inferred-type.metadata=!] this.{self::_Vector::_length}); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] i.{core::num::+}(1))
+    for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation::<??] [@vm.inferred-type.metadata=dart.core::bool] i.{core::num::<}([@vm.direct-call.metadata=#lib::_Vector::_length] [@vm.inferred-type.metadata=int] this.{self::_Vector::_length}); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] i.{core::num::+}(1))
       result = [@vm.direct-call.metadata=dart.core::_Double::+??] [@vm.inferred-type.metadata=dart.core::_Double] result.{core::double::+}([@vm.direct-call.metadata=dart.core::_Double::*] [@vm.inferred-type.metadata=dart.core::_Double] [@vm.direct-call.metadata=#lib::_Vector::[]] [@vm.inferred-type.metadata=dart.core::_Double] this.{self::_Vector::[]}(i).{core::double::*}([@vm.direct-call.metadata=#lib::_Vector::[]??] [@vm.inferred-type.metadata=dart.core::_Double] a.{self::_Vector::[]}(i)));
     return result;
   }
@@ -26,7 +26,7 @@
 [@vm.inferred-type.metadata=dart.core::_Double?]static field core::double x = 0.0;
 static method main(core::List<core::String> args) → dynamic {
   core::Stopwatch timer = let final core::Stopwatch #t4 = new core::Stopwatch::•() in let final dynamic #t5 = [@vm.direct-call.metadata=dart.core::Stopwatch::start] #t4.{core::Stopwatch::start}() in #t4;
-  for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation::<??] [@vm.inferred-type.metadata=dart.core::bool] i.{core::num::<}(100000000); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] i.{core::num::+}(1)) {
+  for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation::<??] [@vm.inferred-type.metadata=dart.core::bool] i.{core::num::<}(100000000); i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+??] [@vm.inferred-type.metadata=int?] i.{core::num::+}(1)) {
     self::x = [@vm.direct-call.metadata=dart.core::_Double::+??] [@vm.inferred-type.metadata=dart.core::_Double] [@vm.inferred-type.metadata=dart.core::_Double?] self::x.{core::double::+}([@vm.direct-call.metadata=#lib::_Vector::*??] [@vm.inferred-type.metadata=dart.core::_Double] [@vm.inferred-type.metadata=#lib::_Vector?] self::v.{self::_Vector::*}([@vm.inferred-type.metadata=#lib::_Vector?] self::v));
   }
   [@vm.direct-call.metadata=dart.core::Stopwatch::stop] timer.{core::Stopwatch::stop}();
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect
index 2d95c84..240802d 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect
@@ -28,7 +28,7 @@
     return new self::Point::•([@vm.direct-call.metadata=#lib::Point::x] [@vm.inferred-type.metadata=!] this.{self::Point::x});
 }
 static method getX([@vm.inferred-type.metadata=#lib::Point] dynamic point) → dynamic {
-  point.x;
+  [@vm.direct-call.metadata=#lib::Point::x] point.x;
 }
 static method main() → dynamic {
   self::Point a = new self::Point::•(new self::T1::•());
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
index 01c1009..86a3d0f 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
@@ -51,7 +51,7 @@
     return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:bar", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
   no-such-method-forwarder method foo() → dynamic
     return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
-  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=!] dynamic a1, [@vm.inferred-type.metadata=!] dynamic a2, [@vm.inferred-type.metadata=!] dynamic a3, [[@vm.inferred-type.metadata=!] dynamic a4 = null, [@vm.inferred-type.metadata=dart.core::Null?] dynamic a5 = null]) → dynamic
+  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=int] dynamic a1, [@vm.inferred-type.metadata=int] dynamic a2, [@vm.inferred-type.metadata=int] dynamic a3, [[@vm.inferred-type.metadata=int] dynamic a4 = null, [@vm.inferred-type.metadata=dart.core::Null?] dynamic a5 = null]) → dynamic
     return [@vm.direct-call.metadata=#lib::B::noSuchMethod] [@vm.inferred-type.metadata=#lib::T1] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("bazz", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a1, a2, a3, a4, a5]), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class C extends core::Object {
@@ -70,7 +70,7 @@
     return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:bar", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
   no-such-method-forwarder method foo() → dynamic
     return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
-  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=!] dynamic a1, [@vm.inferred-type.metadata=!] dynamic a2, [@vm.inferred-type.metadata=!] dynamic a3, [[@vm.inferred-type.metadata=!] dynamic a4 = null, [@vm.inferred-type.metadata=dart.core::Null?] dynamic a5 = null]) → dynamic
+  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=int] dynamic a1, [@vm.inferred-type.metadata=int] dynamic a2, [@vm.inferred-type.metadata=int] dynamic a3, [[@vm.inferred-type.metadata=int] dynamic a4 = null, [@vm.inferred-type.metadata=dart.core::Null?] dynamic a5 = null]) → dynamic
     return [@vm.direct-call.metadata=#lib::C::noSuchMethod] [@vm.inferred-type.metadata=#lib::T2] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withoutType("bazz", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[a1, a2, a3, a4, a5]), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 class E extends core::Object implements self::A {
@@ -103,7 +103,7 @@
   synthetic constructor •() → void
     : super core::Object::•()
     ;
-  method foo({[@vm.inferred-type.metadata=!] dynamic left = null, [@vm.inferred-type.metadata=!] dynamic right = null}) → dynamic
+  method foo({[@vm.inferred-type.metadata=int] dynamic left = null, [@vm.inferred-type.metadata=int] dynamic right = null}) → dynamic
     return new self::T6::•();
   method noSuchMethod(core::Invocation invocation) → dynamic {
     return new self::T7::•();
@@ -130,6 +130,6 @@
   dynamic gg = new self::G::•();
   core::print([@vm.inferred-type.metadata=#lib::T5] gg.noSuchMethod(null, null));
   dynamic hh = new self::H::•();
-  core::print([@vm.inferred-type.metadata=#lib::T6] hh.foo(right: 2, left: 1));
+  core::print([@vm.direct-call.metadata=#lib::H::foo] [@vm.inferred-type.metadata=#lib::T6] hh.foo(right: 2, left: 1));
   core::print([@vm.inferred-type.metadata=#lib::T7] hh.foo(left: 1, top: 2));
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
index 18cbd9d4..1ad7392 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
@@ -16,7 +16,7 @@
   synthetic constructor •() → void
     : super core::Object::•()
     ;
-  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, dynamic a4 = null, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = null]) → void {
+  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, [@vm.inferred-type.metadata=int?] dynamic a4 = null, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = null]) → void {
     [@vm.direct-call.metadata=#lib::A1::foo] this.{self::A1::foo} = a5 as{TypeError} self::T1;
   }
 }
@@ -39,7 +39,7 @@
   synthetic constructor •() → void
     : super core::Object::•()
     ;
-  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, dynamic a4 = null, dynamic a5 = null, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = null]) → void {
+  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, [@vm.inferred-type.metadata=int?] dynamic a4 = null, [@vm.inferred-type.metadata=int?] dynamic a5 = null, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = null]) → void {
     [@vm.direct-call.metadata=#lib::A2::foo] this.{self::A2::foo} = a6;
   }
 }
@@ -56,7 +56,7 @@
     : super self::B2Base::•()
     ;
   method doSuperCall() → void {
-    [@vm.inferred-type.metadata=#lib::A2] super.{self::B2Base::aa2}.call(1, 2, 3, 4, 5, new self::T2::•());
+    [@vm.direct-call.metadata=#lib::A2::call] [@vm.inferred-type.metadata=#lib::A2] super.{self::B2Base::aa2}.call(1, 2, 3, 4, 5, new self::T2::•());
   }
 }
 class T3 extends core::Object {
@@ -72,7 +72,7 @@
   synthetic constructor •() → void
     : super core::Object::•()
     ;
-  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, dynamic a4 = null, dynamic a5 = null, dynamic a6 = null, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = null]) → void {
+  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, [@vm.inferred-type.metadata=int?] dynamic a4 = null, [@vm.inferred-type.metadata=int?] dynamic a5 = null, [@vm.inferred-type.metadata=int?] dynamic a6 = null, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = null]) → void {
     [@vm.direct-call.metadata=#lib::A3::foo] this.{self::A3::foo} = a7;
   }
 }
@@ -95,7 +95,7 @@
   synthetic constructor •() → void
     : super core::Object::•()
     ;
-  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, dynamic a4 = null, dynamic a5 = null, dynamic a6 = null, dynamic a7 = null, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = null]) → void {
+  method call([dynamic a1 = null, dynamic a2 = null, dynamic a3 = null, [@vm.inferred-type.metadata=int?] dynamic a4 = null, [@vm.inferred-type.metadata=int?] dynamic a5 = null, [@vm.inferred-type.metadata=int?] dynamic a6 = null, [@vm.inferred-type.metadata=int?] dynamic a7 = null, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = null]) → void {
     [@vm.direct-call.metadata=#lib::A4::foo] this.{self::A4::foo} = a8;
   }
 }
@@ -123,7 +123,7 @@
   self::B2 bb = new self::B2::•();
   [@vm.direct-call.metadata=#lib::B2::doSuperCall] bb.{self::B2::doSuperCall}();
   self::ok = false;
-  [@vm.inferred-type.metadata=#lib::T2?] [@vm.direct-call.metadata=#lib::B2Base::aa2] [@vm.inferred-type.metadata=#lib::A2] bb.{self::B2Base::aa2}.foo.doTest2();
+  [@vm.direct-call.metadata=#lib::T2::doTest2??] [@vm.direct-call.metadata=#lib::A2::foo] [@vm.inferred-type.metadata=#lib::T2?] [@vm.direct-call.metadata=#lib::B2Base::aa2] [@vm.inferred-type.metadata=#lib::A2] bb.{self::B2Base::aa2}.foo.doTest2();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method getDynamic3() → dynamic
@@ -131,7 +131,7 @@
 static method test3() → void {
   self::getDynamic3().aa3(1, 2, 3, 4, 5, 6, new self::T3::•());
   self::ok = false;
-  [@vm.inferred-type.metadata=#lib::T3?] [@vm.inferred-type.metadata=#lib::A3] [@vm.inferred-type.metadata=#lib::B3?] self::bb3.aa3.foo.doTest3();
+  [@vm.direct-call.metadata=#lib::T3::doTest3??] [@vm.direct-call.metadata=#lib::A3::foo] [@vm.inferred-type.metadata=#lib::T3?] [@vm.direct-call.metadata=#lib::B3::aa3??] [@vm.inferred-type.metadata=#lib::A3] [@vm.inferred-type.metadata=#lib::B3?] self::bb3.aa3.foo.doTest3();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method getDynamic4() → dynamic
@@ -139,7 +139,7 @@
 static method test4() → void {
   self::getDynamic4().aa4(1, 2, 3, 4, 5, 6, 7, new self::T4::•());
   self::ok = false;
-  [@vm.inferred-type.metadata=#lib::T4?] [@vm.inferred-type.metadata=#lib::A4] self::getDynamic4().aa4.foo.doTest4();
+  [@vm.direct-call.metadata=#lib::T4::doTest4??] [@vm.direct-call.metadata=#lib::A4::foo] [@vm.inferred-type.metadata=#lib::T4?] [@vm.inferred-type.metadata=#lib::A4] self::getDynamic4().aa4.foo.doTest4();
   exp::Expect::isTrue([@vm.inferred-type.metadata=dart.core::bool?] self::ok);
 }
 static method main() → void {
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
index 002fca8..8492698 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_dynamic_method.dart.expect
@@ -12,7 +12,7 @@
     : super self::A::•()
     ;
   method foo() → core::int
-    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] 1.{core::num::+}([@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
+    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] 1.{core::num::+}([@vm.direct-call.metadata=#lib::B::foo] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
 }
 class TearOffDynamicMethod extends core::Object {
   field dynamic bazz;
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
index 00d3f0f..18c3870 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect
@@ -13,7 +13,7 @@
     : super self::A::•()
     ;
   method foo() → core::int
-    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] 1.{core::num::+}([@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
+    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] [@vm.inferred-type.metadata=int?] 1.{core::num::+}([@vm.direct-call.metadata=#lib::B::foo] [@vm.inferred-type.metadata=int?] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
 }
 class TearOffInterfaceMethod extends core::Object {
   field dynamic bazz;
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
index 72d0517..689ae8c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_super_method.dart.expect
@@ -13,14 +13,14 @@
     : super self::A::•()
     ;
   method foo() → core::int
-    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] 1.{core::num::+}([@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
+    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] [@vm.inferred-type.metadata=int?] 1.{core::num::+}([@vm.direct-call.metadata=#lib::B::foo] [@vm.inferred-type.metadata=int?] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
 }
 abstract class Base extends core::Object {
   synthetic constructor •() → void
     : super core::Object::•()
     ;
   method foo() → core::int
-    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] 3.{core::num::+}([@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
+    return [@vm.direct-call.metadata=dart.core::_IntegerImplementation::+] [@vm.inferred-type.metadata=int?] 3.{core::num::+}([@vm.direct-call.metadata=#lib::B::foo] [@vm.inferred-type.metadata=int?] [@vm.inferred-type.metadata=#lib::B] self::knownResult().foo() as{TypeError} core::num) as{TypeError} core::int;
   method doCall(dynamic x) → core::int
     return x.call() as{TypeError} core::int;
 }
@@ -29,7 +29,7 @@
     : super self::Base::•()
     ;
   method bar() → core::int
-    return [@vm.direct-call.metadata=#lib::Base::doCall] this.{self::Base::doCall}(super.{self::Base::foo});
+    return [@vm.direct-call.metadata=#lib::Base::doCall] [@vm.inferred-type.metadata=int?] this.{self::Base::doCall}(super.{self::Base::foo});
 }
 [@vm.inferred-type.metadata=#lib::B?]static field self::A aa = new self::B::•();
 static method knownResult() → dynamic
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 5cd4241..a4c50fb 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -333,7 +333,6 @@
     configs += [
                  "..:dart_arch_config",
                  "..:dart_config",
-                 "..:dart_maybe_interpreter_config",
                  "..:dart_precompiler_config",
                ] + extra_configs
     if (is_fuchsia) {
@@ -409,6 +408,7 @@
 
 build_gen_snapshot("gen_snapshot") {
   extra_configs = [
+    "..:dart_maybe_interpreter_config",
     "..:dart_maybe_product_config",
     "..:dart_os_config",
   ]
@@ -421,6 +421,7 @@
 
 build_gen_snapshot("gen_snapshot_product") {
   extra_configs = [
+    "..:dart_maybe_interpreter_config",
     "..:dart_product_config",
     "..:dart_os_config",
   ]
@@ -433,6 +434,7 @@
 
 build_gen_snapshot("gen_snapshot_fuchsia") {
   extra_configs = [
+    "..:dart_maybe_interpreter_config",
     "..:dart_maybe_product_config",
     "..:dart_os_fuchsia_config",
   ]
@@ -445,6 +447,7 @@
 
 build_gen_snapshot("gen_snapshot_product_fuchsia") {
   extra_configs = [
+    "..:dart_maybe_interpreter_config",
     "..:dart_product_config",
     "..:dart_os_fuchsia_config",
   ]
@@ -455,6 +458,60 @@
   ]
 }
 
+if (!is_win) {
+  build_gen_snapshot("gen_snapshot_interpreter") {
+    extra_configs = [
+      "..:dart_interpreter_config",
+      "..:dart_maybe_product_config",
+      "..:dart_os_config",
+    ]
+    extra_deps = [
+      ":gen_snapshot_dart_io",
+      ":libdart_builtin",
+      "..:libdart_nosnapshot_with_precompiler_interpreter",
+    ]
+  }
+
+  build_gen_snapshot("gen_snapshot_product_interpreter") {
+    extra_configs = [
+      "..:dart_interpreter_config",
+      "..:dart_product_config",
+      "..:dart_os_config",
+    ]
+    extra_deps = [
+      ":gen_snapshot_dart_io",
+      ":libdart_builtin",
+      "..:libdart_nosnapshot_with_precompiler_interpreter",
+    ]
+  }
+
+  build_gen_snapshot("gen_snapshot_interpreter_fuchsia") {
+    extra_configs = [
+      "..:dart_interpreter_config",
+      "..:dart_maybe_product_config",
+      "..:dart_os_fuchsia_config",
+    ]
+    extra_deps = [
+      ":gen_snapshot_dart_io_fuchsia",
+      ":libdart_builtin_fuchsia",
+      "..:libdart_nosnapshot_with_precompiler_interpreter_fuchsia",
+    ]
+  }
+
+  build_gen_snapshot("gen_snapshot_product_interpreter_fuchsia") {
+    extra_configs = [
+      "..:dart_interpreter_config",
+      "..:dart_product_config",
+      "..:dart_os_fuchsia_config",
+    ]
+    extra_deps = [
+      ":gen_snapshot_dart_io_product_fuchsia",
+      ":libdart_builtin_product_fuchsia",
+      "..:libdart_nosnapshot_with_precompiler_product_interpreter_fuchsia",
+    ]
+  }
+}
+
 # A source set for the implementation of 'dart:io' library
 # (without secure sockets) suitable for linking with gen_snapshot.
 template("build_gen_snapshot_dart_io") {
diff --git a/runtime/bin/loader.cc b/runtime/bin/loader.cc
index 0096fa6..4e4bf65 100644
--- a/runtime/bin/loader.cc
+++ b/runtime/bin/loader.cc
@@ -674,18 +674,32 @@
                                  MallocFinalizer);
     return result;
   }
-  if (tag == Dart_kImportResolvedExtensionTag) {
-    if (strncmp(url_string, "file://", 7)) {
+  if (tag == Dart_kImportExtensionTag) {
+    if (strncmp(url_string, "dart-ext:", 9)) {
       return DartUtils::NewError(
-          "Resolved native extensions must use the file:// scheme.");
+          "Native extensions must use the dart-ext: scheme.");
     }
-    const char* absolute_path = DartUtils::RemoveScheme(url_string);
+    const char* path = DartUtils::RemoveScheme(url_string);
 
-    if (!File::IsAbsolutePath(absolute_path)) {
-      return DartUtils::NewError("Native extension path must be absolute.");
+    const char* lib_uri = NULL;
+    result = Dart_StringToCString(Dart_LibraryUrl(library), &lib_uri);
+    RETURN_ERROR(result);
+
+    char* lib_path = NULL;
+    if (strncmp(lib_uri, "file://", 7) == 0) {
+      lib_path = DartUtils::DirName(DartUtils::RemoveScheme(lib_uri));
+    } else {
+      lib_path = strdup(lib_uri);
     }
 
-    return Extensions::LoadExtension("/", absolute_path, library);
+    if (!File::IsAbsolutePath(path) && PathContainsSeparator(path)) {
+      return DartUtils::NewError(
+          "Native extension path must be absolute, or simply the file name: "
+          "%s: ",
+          path);
+    }
+
+    return Extensions::LoadExtension(lib_path, path, library);
   }
   if (tag != Dart_kScriptTag) {
     // Special case for handling dart: imports and parts.
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index c15ed08..e67c277 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -1036,7 +1036,7 @@
       // namespace of the root library or invoke a getter of the same name
       // in the exported namespace and return the resulting closure.
       Dart_Handle main_closure =
-          Dart_GetClosure(root_lib, Dart_NewStringFromCString("main"));
+          Dart_GetField(root_lib, Dart_NewStringFromCString("main"));
       CHECK_RESULT(main_closure);
       if (!Dart_IsClosure(main_closure)) {
         ErrorExit(kErrorExitCode,
diff --git a/runtime/configs.gni b/runtime/configs.gni
index be99ecd..fa5658f 100644
--- a/runtime/configs.gni
+++ b/runtime/configs.gni
@@ -16,25 +16,33 @@
   "$_dart_runtime:dart_os_fuchsia_config",
 ]
 
-_jit_config = _base_config + [
-                "$_dart_runtime:dart_maybe_interpreter_config",
-                "$_dart_runtime:dart_maybe_product_config",
-              ]
+_maybe_interpreter_maybe_product = [
+  "$_dart_runtime:dart_maybe_interpreter_config",
+  "$_dart_runtime:dart_maybe_product_config",
+]
 
-_jit_product_config = _base_config + [
-                        "$_dart_runtime:dart_maybe_interpreter_config",
-                        "$_dart_runtime:dart_product_config",
-                      ]
+_maybe_interpreter_product = [
+  "$_dart_runtime:dart_maybe_interpreter_config",
+  "$_dart_runtime:dart_product_config",
+]
 
-_jit_interpreter_config = _base_config + [
-                            "$_dart_runtime:dart_interpreter_config",
-                            "$_dart_runtime:dart_maybe_product_config",
-                          ]
+_interpreter_maybe_product = [
+  "$_dart_runtime:dart_interpreter_config",
+  "$_dart_runtime:dart_maybe_product_config",
+]
 
-_jit_product_interpreter_config = _base_config + [
-                                    "$_dart_runtime:dart_interpreter_config",
-                                    "$_dart_runtime:dart_product_config",
-                                  ]
+_interpreter_product = [
+  "$_dart_runtime:dart_interpreter_config",
+  "$_dart_runtime:dart_product_config",
+]
+
+_jit_config = _base_config + _maybe_interpreter_maybe_product
+
+_jit_product_config = _base_config + _maybe_interpreter_product
+
+_jit_interpreter_config = _base_config + _interpreter_maybe_product
+
+_jit_product_interpreter_config = _base_config + _interpreter_product
 
 _precompiled_runtime_config =
     _base_config + [
@@ -58,33 +66,34 @@
                                 "$_dart_runtime:dart_precompiler_config",
                               ]
 
+_nosnapshot_precompiler_base = [
+  "$_dart_runtime:dart_nosnapshot_config",
+  "$_dart_runtime:dart_precompiler_config",
+]
+
 _nosnapshot_with_precompiler_config =
-    _base_config + [
-      "$_dart_runtime:dart_maybe_product_config",
-      "$_dart_runtime:dart_nosnapshot_config",
-      "$_dart_runtime:dart_precompiler_config",
-    ]
+    _base_config + _nosnapshot_precompiler_base + _maybe_interpreter_maybe_product
+
+_nosnapshot_with_precompiler_interpreter_config =
+    _base_config + _nosnapshot_precompiler_base + _interpreter_maybe_product
+
+_nosnapshot_with_precompiler_product_interpreter_config =
+    _base_config + _nosnapshot_precompiler_base + _interpreter_product
 
 _nosnapshot_with_precompiler_product_config =
-    _base_config + [
-      "$_dart_runtime:dart_product_config",
-      "$_dart_runtime:dart_nosnapshot_config",
-      "$_dart_runtime:dart_precompiler_config",
-    ]
+    _base_config + _nosnapshot_precompiler_base + _maybe_interpreter_product
 
 _nosnapshot_with_precompiler_fuchsia_config =
-    _base_fuchsia_config + [
-      "$_dart_runtime:dart_maybe_product_config",
-      "$_dart_runtime:dart_nosnapshot_config",
-      "$_dart_runtime:dart_precompiler_config",
-    ]
+    _base_fuchsia_config + _nosnapshot_precompiler_base + _maybe_interpreter_maybe_product
 
 _nosnapshot_with_precompiler_product_fuchsia_config =
-    _base_fuchsia_config + [
-      "$_dart_runtime:dart_product_config",
-      "$_dart_runtime:dart_nosnapshot_config",
-      "$_dart_runtime:dart_precompiler_config",
-    ]
+    _base_fuchsia_config + _nosnapshot_precompiler_base + _maybe_interpreter_product
+
+_nosnapshot_with_precompiler_interpreter_fuchsia_config =
+    _base_fuchsia_config + _nosnapshot_precompiler_base + _interpreter_maybe_product
+
+_nosnapshot_with_precompiler_product_interpreter_fuchsia_config =
+    _base_fuchsia_config + _nosnapshot_precompiler_base + _interpreter_product
 
 _all_configs = [
   {
@@ -152,6 +161,26 @@
       configs = _jit_product_interpreter_config
       snapshot = true
     },
+    {
+      suffix = "_nosnapshot_with_precompiler_interpreter"
+      configs = _nosnapshot_with_precompiler_interpreter_config
+      snapshot = false
+    },
+    {
+      suffix = "_nosnapshot_with_precompiler_product_interpreter"
+      configs = _nosnapshot_with_precompiler_product_interpreter_config
+      snapshot = false
+    },
+    {
+      suffix = "_nosnapshot_with_precompiler_interpreter_fuchsia"
+      configs = _nosnapshot_with_precompiler_interpreter_fuchsia_config
+      snapshot = false
+    },
+    {
+      suffix = "_nosnapshot_with_precompiler_product_interpreter_fuchsia"
+      configs = _nosnapshot_with_precompiler_product_interpreter_fuchsia_config
+      snapshot = false
+    },
   ]
 }
 
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index 3934bda..1954394 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -9,10 +9,8 @@
 
 /** \mainpage Dart Embedding API Reference
  *
- * Dart is a class-based programming language for creating structured
- * web applications. This reference describes the Dart embedding api,
- * which is used to embed the Dart Virtual Machine within an
- * application.
+ * This reference describes the Dart Embedding API, which is used to embed the
+ * Dart Virtual Machine within C/C++ applications.
  *
  * This reference is generated from the header include/dart_api.h.
  */
@@ -1695,20 +1693,6 @@
 DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, double* value);
 
 /**
- * Returns a closure of top level function 'function_name' in the exported
- * namespace of specified 'library'. If a top level function 'function_name'
- * does not exist, looks for a top level getter 'function_name' and invokes
- * it and returns the object returned by the getter.
- *
- * \param library Library object
- * \param function_name Name of the top level function
- *
- * \return A valid Dart instance if no error occurs during the operation.
- */
-DART_EXPORT Dart_Handle Dart_GetClosure(Dart_Handle library,
-                                        Dart_Handle function_name);
-
-/**
  * Returns a closure of static function 'function_name' in the class 'class_name'
  * in the exported namespace of specified 'library'.
  *
@@ -2862,7 +2846,7 @@
   Dart_kSourceTag,
   Dart_kImportTag,
   Dart_kKernelTag,
-  Dart_kImportResolvedExtensionTag,
+  Dart_kImportExtensionTag,
 } Dart_LibraryTag;
 
 /**
@@ -2912,12 +2896,10 @@
  * files into one intermediate file hence we don't use the source/import or
  * script tags.
  *
- * Dart_kImportResolvedExtensionTag
+ * Dart_kImportExtensionTag
  *
- * This tag is used to load an external import (shared object file) without
- * performing path resolution first. The 'url' provided should be an absolute
- * path with the 'file://' schema. It doesn't require the service isolate to be
- * available and will not initialize a Loader for the isolate.
+ * This tag is used to load an external import (shared object file). The
+ * extension path must have the scheme 'dart-ext:'.
  */
 typedef Dart_Handle (*Dart_LibraryTagHandler)(
     Dart_LibraryTag tag,
diff --git a/runtime/lib/array.dart b/runtime/lib/array.dart
index b6b5508..66aab66 100644
--- a/runtime/lib/array.dart
+++ b/runtime/lib/array.dart
@@ -4,6 +4,7 @@
 
 // part of "core_patch.dart";
 
+@pragma("vm.entry-point")
 class _List<E> extends FixedLengthListBase<E> {
   factory _List(length) native "List_allocate";
 
diff --git a/runtime/lib/bool_patch.dart b/runtime/lib/bool_patch.dart
index bfa18bb..aded25c 100644
--- a/runtime/lib/bool_patch.dart
+++ b/runtime/lib/bool_patch.dart
@@ -5,6 +5,7 @@
 // part of "core_patch.dart";
 
 @patch
+@pragma("vm.entry-point")
 class bool {
   @patch
   const factory bool.fromEnvironment(String name, {bool defaultValue: false})
diff --git a/runtime/lib/compact_hash.dart b/runtime/lib/compact_hash.dart
index 6f7737e..8ed8af6 100644
--- a/runtime/lib/compact_hash.dart
+++ b/runtime/lib/compact_hash.dart
@@ -131,6 +131,7 @@
 }
 
 // VM-internalized implementation of a default-constructed LinkedHashMap.
+@pragma("vm.entry-point")
 class _InternalLinkedHashMap<K, V> extends _HashVMBase
     with
         MapMixin<K, V>,
diff --git a/runtime/lib/double.dart b/runtime/lib/double.dart
index 151bf24..aa2da6b 100644
--- a/runtime/lib/double.dart
+++ b/runtime/lib/double.dart
@@ -4,6 +4,7 @@
 
 // part of "core_patch.dart";
 
+@pragma("vm.entry-point")
 class _Double implements double {
   factory _Double.fromInteger(int value) native "Double_doubleFromInteger";
 
diff --git a/runtime/lib/function.dart b/runtime/lib/function.dart
index 2882d36..2707cf7 100644
--- a/runtime/lib/function.dart
+++ b/runtime/lib/function.dart
@@ -4,6 +4,7 @@
 
 // part of "core_patch.dart";
 
+@pragma("vm.entry-point")
 class _Closure implements Function {
   bool operator ==(Object other) native "Closure_equals";
 
diff --git a/runtime/lib/growable_array.dart b/runtime/lib/growable_array.dart
index 7252478..c38af29 100644
--- a/runtime/lib/growable_array.dart
+++ b/runtime/lib/growable_array.dart
@@ -4,6 +4,7 @@
 
 // part of "core_patch.dart";
 
+@pragma("vm.entry-point")
 class _GrowableList<T> extends ListBase<T> {
   void insert(int index, T element) {
     if ((index < 0) || (index > length)) {
diff --git a/runtime/lib/integers.dart b/runtime/lib/integers.dart
index eb2d165..457c834 100644
--- a/runtime/lib/integers.dart
+++ b/runtime/lib/integers.dart
@@ -451,6 +451,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Smi extends _IntegerImplementation implements _int64 {
   factory _Smi._uninstantiable() {
     throw new UnsupportedError("_Smi can only be allocated by the VM");
@@ -649,6 +650,7 @@
 }
 
 // Represents integers that cannot be represented by Smi but fit into 64bits.
+@pragma("vm.entry-point")
 class _Mint extends _IntegerImplementation implements _int64 {
   factory _Mint._uninstantiable() {
     throw new UnsupportedError("_Mint can only be allocated by the VM");
diff --git a/runtime/lib/isolate_patch.dart b/runtime/lib/isolate_patch.dart
index 7569397..7ee29d8 100644
--- a/runtime/lib/isolate_patch.dart
+++ b/runtime/lib/isolate_patch.dart
@@ -34,6 +34,7 @@
   factory Capability() => new _CapabilityImpl();
 }
 
+@pragma("vm.entry-point")
 class _CapabilityImpl implements Capability {
   factory _CapabilityImpl() native "CapabilityImpl_factory";
 
@@ -128,6 +129,7 @@
   return _isolateScheduleImmediate;
 }
 
+@pragma("vm.entry-point")
 class _RawReceivePortImpl implements RawReceivePort {
   factory _RawReceivePortImpl() native "RawReceivePortImpl_factory";
 
@@ -192,6 +194,7 @@
   static final Map _handlerMap = _initHandlerMap();
 }
 
+@pragma("vm.entry-point")
 class _SendPortImpl implements SendPort {
   /*--- public interface ---*/
   @pragma("vm.entry-point")
diff --git a/runtime/lib/lib_prefix.dart b/runtime/lib/lib_prefix.dart
index aae8c85..de00fcd 100644
--- a/runtime/lib/lib_prefix.dart
+++ b/runtime/lib/lib_prefix.dart
@@ -5,6 +5,7 @@
 // part of "core_patch.dart";
 
 // This type corresponds to the VM-internal class LibraryPrefix.
+@pragma("vm.entry-point")
 class _LibraryPrefix {
   bool _load() native "LibraryPrefix_load";
   Object _loadError() native "LibraryPrefix_loadError";
diff --git a/runtime/lib/mirror_reference.dart b/runtime/lib/mirror_reference.dart
index 4510497..8b31670 100644
--- a/runtime/lib/mirror_reference.dart
+++ b/runtime/lib/mirror_reference.dart
@@ -4,6 +4,7 @@
 
 // part of "mirrors_patch.dart";
 
+@pragma("vm.entry-point")
 class _MirrorReference {
   factory _MirrorReference._uninstantiable() {
     throw new UnsupportedError("class _MirrorReference cannot be instantiated");
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
index e4ead66..edb8d93 100644
--- a/runtime/lib/mirrors.cc
+++ b/runtime/lib/mirrors.cc
@@ -28,6 +28,13 @@
     Exceptions::PropagateError(Error::Handle(type.error()));                   \
   }
 
+#define RETURN_OR_PROPAGATE(expr)                                              \
+  RawObject* result = expr;                                                    \
+  if (RawObject::IsErrorClassId(result->GetClassIdMayBeSmi())) {               \
+    Exceptions::PropagateError(Error::Handle(Error::RawCast(result)));         \
+  }                                                                            \
+  return result;
+
 static RawInstance* CreateMirror(const String& mirror_class_name,
                                  const Array& constructor_arguments) {
   const Library& mirrors_lib = Library::Handle(Library::MirrorsLibrary());
@@ -575,136 +582,6 @@
 #endif
 }
 
-static RawInstance* ReturnResult(const Object& result) {
-  if (result.IsError()) {
-    Exceptions::PropagateError(Error::Cast(result));
-    UNREACHABLE();
-  }
-  if (result.IsInstance()) {
-    return Instance::Cast(result).raw();
-  }
-  ASSERT(result.IsNull());
-  return Instance::null();
-}
-
-// Invoke the function, or noSuchMethod if it is null. Propagate any unhandled
-// exceptions. Wrap and propagate any compilation errors.
-static RawInstance* InvokeDynamicFunction(const Instance& receiver,
-                                          const Function& function,
-                                          const String& target_name,
-                                          const Array& args,
-                                          const Array& args_descriptor_array) {
-  // Note "args" is already the internal arguments with the receiver as the
-  // first element.
-  Object& result = Object::Handle();
-  ArgumentsDescriptor args_descriptor(args_descriptor_array);
-  if (function.IsNull() || !function.is_reflectable() ||
-      !function.AreValidArguments(args_descriptor, NULL)) {
-    result = DartEntry::InvokeNoSuchMethod(receiver, target_name, args,
-                                           args_descriptor_array);
-  } else {
-    result = DartEntry::InvokeFunction(function, args, args_descriptor_array);
-  }
-  return ReturnResult(result);
-}
-
-static RawInstance* InvokeLibraryGetter(const Library& library,
-                                        const String& getter_name,
-                                        const bool throw_nsm_if_absent) {
-  // To access a top-level we may need to use the Field or the getter Function.
-  // The getter function may either be in the library or in the field's owner
-  // class, depending on whether it was an actual getter, or an uninitialized
-  // field.
-  const Field& field = Field::Handle(library.LookupLocalField(getter_name));
-  Function& getter = Function::Handle();
-  if (field.IsNull()) {
-    // No field found. Check for a getter in the lib.
-    const String& internal_getter_name =
-        String::Handle(Field::GetterName(getter_name));
-    getter = library.LookupLocalFunction(internal_getter_name);
-    if (getter.IsNull()) {
-      getter = library.LookupLocalFunction(getter_name);
-      if (!getter.IsNull()) {
-        // Looking for a getter but found a regular method: closurize it.
-        const Function& closure_function =
-            Function::Handle(getter.ImplicitClosureFunction());
-        return closure_function.ImplicitStaticClosure();
-      }
-    }
-  } else {
-    if (!field.IsUninitialized()) {
-      return field.StaticValue();
-    }
-    // An uninitialized field was found.  Check for a getter in the field's
-    // owner class.
-    const Class& klass = Class::Handle(field.Owner());
-    const String& internal_getter_name =
-        String::Handle(Field::GetterName(getter_name));
-    getter = klass.LookupStaticFunction(internal_getter_name);
-  }
-
-  if (!getter.IsNull() && getter.is_reflectable()) {
-    // Invoke the getter and return the result.
-    const Object& result = Object::Handle(
-        DartEntry::InvokeFunction(getter, Object::empty_array()));
-    return ReturnResult(result);
-  }
-
-  if (throw_nsm_if_absent) {
-    ThrowNoSuchMethod(AbstractType::Handle(
-                          Class::Handle(library.toplevel_class()).RareType()),
-                      getter_name, Object::null_array(), Object::null_array(),
-                      InvocationMirror::kTopLevel, InvocationMirror::kGetter);
-    UNREACHABLE();
-  }
-
-  // Fall through case: Indicate that we didn't find any function or field using
-  // a special null instance. This is different from a field being null. Callers
-  // make sure that this null does not leak into Dartland.
-  return Object::sentinel().raw();
-}
-
-static RawInstance* InvokeClassGetter(const Class& klass,
-                                      const String& getter_name,
-                                      const bool throw_nsm_if_absent) {
-  // Note static fields do not have implicit getters.
-  const Field& field = Field::Handle(klass.LookupStaticField(getter_name));
-  if (field.IsNull() || field.IsUninitialized()) {
-    const String& internal_getter_name =
-        String::Handle(Field::GetterName(getter_name));
-    Function& getter =
-        Function::Handle(klass.LookupStaticFunction(internal_getter_name));
-
-    if (getter.IsNull() || !getter.is_reflectable()) {
-      if (getter.IsNull()) {
-        getter = klass.LookupStaticFunction(getter_name);
-        if (!getter.IsNull()) {
-          // Looking for a getter but found a regular method: closurize it.
-          const Function& closure_function =
-              Function::Handle(getter.ImplicitClosureFunction());
-          return closure_function.ImplicitStaticClosure();
-        }
-      }
-      if (throw_nsm_if_absent) {
-        ThrowNoSuchMethod(AbstractType::Handle(klass.RareType()), getter_name,
-                          Object::null_array(), Object::null_array(),
-                          InvocationMirror::kStatic, InvocationMirror::kGetter);
-        UNREACHABLE();
-      }
-      // Fall through case: Indicate that we didn't find any function or field
-      // using a special null instance. This is different from a field being
-      // null. Callers make sure that this null does not leak into Dartland.
-      return Object::sentinel().raw();
-    }
-
-    // Invoke the getter and return the result.
-    const Object& result = Object::Handle(
-        DartEntry::InvokeFunction(getter, Object::empty_array()));
-    return ReturnResult(result);
-  }
-  return field.StaticValue();
-}
-
 static RawAbstractType* InstantiateType(const AbstractType& type,
                                         const AbstractType& instantiator) {
   // Generic function type parameters are not reified, but mapped to dynamic,
@@ -1341,48 +1218,7 @@
                                arguments->NativeArgAt(2));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(3));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(4));
-
-  Class& klass = Class::Handle(reflectee.clazz());
-  Function& function = Function::Handle(
-      zone, Resolver::ResolveDynamicAnyArgs(zone, klass, function_name));
-
-  // TODO(regis): Support invocation of generic functions with type arguments.
-  const int kTypeArgsLen = 0;
-  const Array& args_descriptor = Array::Handle(
-      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
-
-  if (function.IsNull()) {
-    // Didn't find a method: try to find a getter and invoke call on its result.
-    const String& getter_name =
-        String::Handle(zone, Field::GetterName(function_name));
-    function = Resolver::ResolveDynamicAnyArgs(zone, klass, getter_name);
-    if (!function.IsNull()) {
-      ASSERT(function.kind() != RawFunction::kMethodExtractor);
-      // Invoke the getter.
-      const int kNumArgs = 1;
-      const Array& getter_args = Array::Handle(zone, Array::New(kNumArgs));
-      getter_args.SetAt(0, reflectee);
-      const Array& getter_args_descriptor = Array::Handle(
-          zone, ArgumentsDescriptor::New(kTypeArgsLen, getter_args.Length()));
-      const Instance& getter_result = Instance::Handle(
-          zone, InvokeDynamicFunction(reflectee, function, getter_name,
-                                      getter_args, getter_args_descriptor));
-      // Replace the closure as the receiver in the arguments list.
-      args.SetAt(0, getter_result);
-      // Call the closure.
-      const Object& call_result =
-          Object::Handle(zone, DartEntry::InvokeClosure(args, args_descriptor));
-      if (call_result.IsError()) {
-        Exceptions::PropagateError(Error::Cast(call_result));
-        UNREACHABLE();
-      }
-      return call_result.raw();
-    }
-  }
-
-  // Found an ordinary method.
-  return InvokeDynamicFunction(reflectee, function, function_name, args,
-                               args_descriptor);
+  RETURN_OR_PROPAGATE(reflectee.Invoke(function_name, args, arg_names));
 }
 
 DEFINE_NATIVE_ENTRY(InstanceMirror_invokeGetter, 3) {
@@ -1391,33 +1227,7 @@
   // with its cousins.
   GET_NATIVE_ARGUMENT(Instance, reflectee, arguments->NativeArgAt(1));
   GET_NON_NULL_NATIVE_ARGUMENT(String, getter_name, arguments->NativeArgAt(2));
-  Class& klass = Class::Handle(reflectee.clazz());
-
-  const String& internal_getter_name =
-      String::Handle(Field::GetterName(getter_name));
-  Function& function = Function::Handle(
-      zone, Resolver::ResolveDynamicAnyArgs(zone, klass, internal_getter_name));
-
-  // Check for method extraction when method extractors are not created.
-  if (function.IsNull() && !FLAG_lazy_dispatchers) {
-    function = Resolver::ResolveDynamicAnyArgs(zone, klass, getter_name);
-    if (!function.IsNull()) {
-      const Function& closure_function =
-          Function::Handle(zone, function.ImplicitClosureFunction());
-      return closure_function.ImplicitInstanceClosure(reflectee);
-    }
-  }
-
-  const int kTypeArgsLen = 0;
-  const int kNumArgs = 1;
-  const Array& args = Array::Handle(zone, Array::New(kNumArgs));
-  args.SetAt(0, reflectee);
-  const Array& args_descriptor = Array::Handle(
-      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
-
-  // InvokeDynamic invokes NoSuchMethod if the provided function is null.
-  return InvokeDynamicFunction(reflectee, function, internal_getter_name, args,
-                               args_descriptor);
+  RETURN_OR_PROPAGATE(reflectee.InvokeGetter(getter_name));
 }
 
 DEFINE_NATIVE_ENTRY(InstanceMirror_invokeSetter, 4) {
@@ -1427,23 +1237,7 @@
   GET_NATIVE_ARGUMENT(Instance, reflectee, arguments->NativeArgAt(1));
   GET_NON_NULL_NATIVE_ARGUMENT(String, setter_name, arguments->NativeArgAt(2));
   GET_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(3));
-
-  const Class& klass = Class::Handle(zone, reflectee.clazz());
-  const String& internal_setter_name =
-      String::Handle(zone, Field::SetterName(setter_name));
-  const Function& setter = Function::Handle(
-      zone, Resolver::ResolveDynamicAnyArgs(zone, klass, internal_setter_name));
-
-  const int kTypeArgsLen = 0;
-  const int kNumArgs = 2;
-  const Array& args = Array::Handle(zone, Array::New(kNumArgs));
-  args.SetAt(0, reflectee);
-  args.SetAt(1, value);
-  const Array& args_descriptor = Array::Handle(
-      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
-
-  return InvokeDynamicFunction(reflectee, setter, internal_setter_name, args,
-                               args_descriptor);
+  RETURN_OR_PROPAGATE(reflectee.InvokeSetter(setter_name, value));
 }
 
 DEFINE_NATIVE_ENTRY(InstanceMirror_computeType, 1) {
@@ -1498,74 +1292,7 @@
                                arguments->NativeArgAt(2));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(3));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(4));
-
-  // TODO(regis): Support invocation of generic functions with type arguments.
-  const int kTypeArgsLen = 0;
-  const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread));
-  if (!error.IsNull()) {
-    Exceptions::PropagateError(error);
-    UNREACHABLE();
-  }
-
-  Function& function =
-      Function::Handle(klass.LookupStaticFunction(function_name));
-
-  if (function.IsNull()) {
-    // Didn't find a method: try to find a getter and invoke call on its result.
-    const String& getter_name =
-        String::Handle(Field::GetterName(function_name));
-    function = klass.LookupStaticFunction(getter_name);
-    if (!function.IsNull()) {
-      // Invoke the getter.
-      const Object& getter_result = Object::Handle(
-          DartEntry::InvokeFunction(function, Object::empty_array()));
-      if (getter_result.IsError()) {
-        Exceptions::PropagateError(Error::Cast(getter_result));
-        UNREACHABLE();
-      }
-      // Make room for the closure (receiver) in the argument list.
-      const intptr_t num_args = args.Length();
-      const Array& call_args = Array::Handle(Array::New(num_args + 1));
-      Object& temp = Object::Handle();
-      for (int i = 0; i < num_args; i++) {
-        temp = args.At(i);
-        call_args.SetAt(i + 1, temp);
-      }
-      call_args.SetAt(0, getter_result);
-      const Array& call_args_descriptor_array =
-          Array::Handle(ArgumentsDescriptor::New(
-              kTypeArgsLen, call_args.Length(), arg_names));
-      // Call the closure.
-      const Object& call_result = Object::Handle(
-          DartEntry::InvokeClosure(call_args, call_args_descriptor_array));
-      if (call_result.IsError()) {
-        Exceptions::PropagateError(Error::Cast(call_result));
-        UNREACHABLE();
-      }
-      return call_result.raw();
-    }
-  }
-
-  const Array& args_descriptor_array = Array::Handle(
-      ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
-
-  ArgumentsDescriptor args_descriptor(args_descriptor_array);
-
-  if (function.IsNull() || !function.AreValidArguments(args_descriptor, NULL) ||
-      !function.is_reflectable()) {
-    ThrowNoSuchMethod(AbstractType::Handle(klass.RareType()), function_name,
-                      args, arg_names, InvocationMirror::kStatic,
-                      InvocationMirror::kMethod);
-    UNREACHABLE();
-  }
-
-  Object& result = Object::Handle(
-      DartEntry::InvokeFunction(function, args, args_descriptor_array));
-  if (result.IsError()) {
-    Exceptions::PropagateError(Error::Cast(result));
-    UNREACHABLE();
-  }
-  return result.raw();
+  RETURN_OR_PROPAGATE(klass.Invoke(function_name, args, arg_names));
 }
 
 DEFINE_NATIVE_ENTRY(ClassMirror_invokeGetter, 3) {
@@ -1580,7 +1307,7 @@
     UNREACHABLE();
   }
   GET_NON_NULL_NATIVE_ARGUMENT(String, getter_name, arguments->NativeArgAt(2));
-  return InvokeClassGetter(klass, getter_name, true);
+  RETURN_OR_PROPAGATE(klass.InvokeGetter(getter_name, true));
 }
 
 DEFINE_NATIVE_ENTRY(ClassMirror_invokeSetter, 4) {
@@ -1591,55 +1318,7 @@
   const Class& klass = Class::Handle(ref.GetClassReferent());
   GET_NON_NULL_NATIVE_ARGUMENT(String, setter_name, arguments->NativeArgAt(2));
   GET_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(3));
-
-  const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread));
-  if (!error.IsNull()) {
-    Exceptions::PropagateError(error);
-    UNREACHABLE();
-  }
-
-  // Check for real fields and user-defined setters.
-  const Field& field = Field::Handle(klass.LookupStaticField(setter_name));
-  Function& setter = Function::Handle();
-  const String& internal_setter_name =
-      String::Handle(Field::SetterName(setter_name));
-
-  if (field.IsNull()) {
-    setter = klass.LookupStaticFunction(internal_setter_name);
-
-    const int kNumArgs = 1;
-    const Array& args = Array::Handle(Array::New(kNumArgs));
-    args.SetAt(0, value);
-
-    if (setter.IsNull() || !setter.is_reflectable()) {
-      ThrowNoSuchMethod(AbstractType::Handle(klass.RareType()),
-                        internal_setter_name, args, Object::null_array(),
-                        InvocationMirror::kStatic, InvocationMirror::kSetter);
-      UNREACHABLE();
-    }
-
-    // Invoke the setter and return the result.
-    Object& result = Object::Handle(DartEntry::InvokeFunction(setter, args));
-    if (result.IsError()) {
-      Exceptions::PropagateError(Error::Cast(result));
-      UNREACHABLE();
-    }
-    return result.raw();
-  }
-
-  if (field.is_final() || !field.is_reflectable()) {
-    const int kNumArgs = 1;
-    const Array& args = Array::Handle(Array::New(kNumArgs));
-    args.SetAt(0, value);
-
-    ThrowNoSuchMethod(AbstractType::Handle(klass.RareType()),
-                      internal_setter_name, args, Object::null_array(),
-                      InvocationMirror::kStatic, InvocationMirror::kSetter);
-    UNREACHABLE();
-  }
-
-  field.SetStaticValue(value);
-  return value.raw();
+  RETURN_OR_PROPAGATE(klass.InvokeSetter(setter_name, value));
 }
 
 DEFINE_NATIVE_ENTRY(ClassMirror_invokeConstructor, 5) {
@@ -1804,60 +1483,7 @@
                                arguments->NativeArgAt(2));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(3));
   GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(4));
-
-  // TODO(regis): Support invocation of generic functions with type arguments.
-  const int kTypeArgsLen = 0;
-  Function& function =
-      Function::Handle(library.LookupLocalFunction(function_name));
-
-  if (function.IsNull()) {
-    // Didn't find a method: try to find a getter and invoke call on its result.
-    const Instance& getter_result =
-        Instance::Handle(InvokeLibraryGetter(library, function_name, false));
-    if (getter_result.raw() != Object::sentinel().raw()) {
-      // Make room for the closure (receiver) in arguments.
-      intptr_t numArgs = args.Length();
-      const Array& call_args = Array::Handle(Array::New(numArgs + 1));
-      Object& temp = Object::Handle();
-      for (int i = 0; i < numArgs; i++) {
-        temp = args.At(i);
-        call_args.SetAt(i + 1, temp);
-      }
-      call_args.SetAt(0, getter_result);
-      const Array& call_args_descriptor_array =
-          Array::Handle(ArgumentsDescriptor::New(
-              kTypeArgsLen, call_args.Length(), arg_names));
-      // Call closure.
-      const Object& call_result = Object::Handle(
-          DartEntry::InvokeClosure(call_args, call_args_descriptor_array));
-      if (call_result.IsError()) {
-        Exceptions::PropagateError(Error::Cast(call_result));
-        UNREACHABLE();
-      }
-      return call_result.raw();
-    }
-  }
-
-  const Array& args_descriptor_array = Array::Handle(
-      ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
-  ArgumentsDescriptor args_descriptor(args_descriptor_array);
-
-  if (function.IsNull() || !function.AreValidArguments(args_descriptor, NULL) ||
-      !function.is_reflectable()) {
-    ThrowNoSuchMethod(AbstractType::Handle(
-                          Class::Handle(library.toplevel_class()).RareType()),
-                      function_name, args, arg_names,
-                      InvocationMirror::kTopLevel, InvocationMirror::kMethod);
-    UNREACHABLE();
-  }
-
-  const Object& result = Object::Handle(
-      DartEntry::InvokeFunction(function, args, args_descriptor_array));
-  if (result.IsError()) {
-    Exceptions::PropagateError(Error::Cast(result));
-    UNREACHABLE();
-  }
-  return result.raw();
+  RETURN_OR_PROPAGATE(library.Invoke(function_name, args, arg_names));
 }
 
 DEFINE_NATIVE_ENTRY(LibraryMirror_invokeGetter, 3) {
@@ -1867,7 +1493,7 @@
   GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1));
   const Library& library = Library::Handle(ref.GetLibraryReferent());
   GET_NON_NULL_NATIVE_ARGUMENT(String, getter_name, arguments->NativeArgAt(2));
-  return InvokeLibraryGetter(library, getter_name, true);
+  RETURN_OR_PROPAGATE(library.InvokeGetter(getter_name, true));
 }
 
 DEFINE_NATIVE_ENTRY(LibraryMirror_invokeSetter, 4) {
@@ -1878,54 +1504,7 @@
   const Library& library = Library::Handle(ref.GetLibraryReferent());
   GET_NON_NULL_NATIVE_ARGUMENT(String, setter_name, arguments->NativeArgAt(2));
   GET_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(3));
-
-  // To access a top-level we may need to use the Field or the
-  // setter Function.  The setter function may either be in the
-  // library or in the field's owner class, depending.
-  const Field& field = Field::Handle(library.LookupLocalField(setter_name));
-  Function& setter = Function::Handle();
-  const String& internal_setter_name =
-      String::Handle(Field::SetterName(setter_name));
-
-  if (field.IsNull()) {
-    setter = library.LookupLocalFunction(internal_setter_name);
-
-    const int kNumArgs = 1;
-    const Array& args = Array::Handle(Array::New(kNumArgs));
-    args.SetAt(0, value);
-
-    if (setter.IsNull() || !setter.is_reflectable()) {
-      ThrowNoSuchMethod(AbstractType::Handle(
-                            Class::Handle(library.toplevel_class()).RareType()),
-                        internal_setter_name, args, Object::null_array(),
-                        InvocationMirror::kTopLevel, InvocationMirror::kSetter);
-      UNREACHABLE();
-    }
-
-    // Invoke the setter and return the result.
-    const Object& result =
-        Object::Handle(DartEntry::InvokeFunction(setter, args));
-    if (result.IsError()) {
-      Exceptions::PropagateError(Error::Cast(result));
-      UNREACHABLE();
-    }
-    return result.raw();
-  }
-
-  if (field.is_final() || !field.is_reflectable()) {
-    const int kNumArgs = 1;
-    const Array& args = Array::Handle(Array::New(kNumArgs));
-    args.SetAt(0, value);
-
-    ThrowNoSuchMethod(AbstractType::Handle(
-                          Class::Handle(library.toplevel_class()).RareType()),
-                      internal_setter_name, args, Object::null_array(),
-                      InvocationMirror::kTopLevel, InvocationMirror::kSetter);
-    UNREACHABLE();
-  }
-
-  field.SetStaticValue(value);
-  return value.raw();
+  RETURN_OR_PROPAGATE(library.InvokeSetter(setter_name, value));
 }
 
 DEFINE_NATIVE_ENTRY(MethodMirror_owner, 2) {
diff --git a/runtime/lib/null_patch.dart b/runtime/lib/null_patch.dart
index a8da2ea..08b55bb 100644
--- a/runtime/lib/null_patch.dart
+++ b/runtime/lib/null_patch.dart
@@ -5,6 +5,7 @@
 // part of "core_patch.dart";
 
 @patch
+@pragma("vm.entry-point")
 class Null {
   static const _HASH_CODE = 2011; // The year Dart was announced and a prime.
 
diff --git a/runtime/lib/object_patch.dart b/runtime/lib/object_patch.dart
index 50f279a..8a743ba 100644
--- a/runtime/lib/object_patch.dart
+++ b/runtime/lib/object_patch.dart
@@ -8,6 +8,7 @@
 void _setHash(obj, hash) native "Object_setHash";
 
 @patch
+@pragma("vm.entry-point")
 class Object {
   // The VM has its own implementation of equals.
   @patch
diff --git a/runtime/lib/profiler.dart b/runtime/lib/profiler.dart
index 40295a4..7814d69 100644
--- a/runtime/lib/profiler.dart
+++ b/runtime/lib/profiler.dart
@@ -14,6 +14,7 @@
   static UserTag get defaultTag => _getDefaultTag();
 }
 
+@pragma("vm.entry-point")
 class _UserTag implements UserTag {
   factory _UserTag(String label) native "UserTag_new";
   String get label native "UserTag_label";
diff --git a/runtime/lib/regexp_patch.dart b/runtime/lib/regexp_patch.dart
index b7e0f46..f24cdeb 100644
--- a/runtime/lib/regexp_patch.dart
+++ b/runtime/lib/regexp_patch.dart
@@ -182,6 +182,7 @@
   static const int _MATCH_PAIR = 2;
 }
 
+@pragma("vm.entry-point")
 class _RegExp implements RegExp {
   factory _RegExp(String pattern,
       {bool multiLine: false,
diff --git a/runtime/lib/stacktrace.dart b/runtime/lib/stacktrace.dart
index 2022923..ca29353 100644
--- a/runtime/lib/stacktrace.dart
+++ b/runtime/lib/stacktrace.dart
@@ -5,6 +5,7 @@
 // part of "core_patch.dart";
 
 /// VM internal StackTrace implementation.
+@pragma("vm.entry-point")
 class _StackTrace implements StackTrace {
   // toString() is overridden on the C++ side.
 }
diff --git a/runtime/lib/string_patch.dart b/runtime/lib/string_patch.dart
index cc503ff..2757b76 100644
--- a/runtime/lib/string_patch.dart
+++ b/runtime/lib/string_patch.dart
@@ -923,6 +923,7 @@
       native "String_concatRange";
 }
 
+@pragma("vm.entry-point")
 class _OneByteString extends _StringBase {
   factory _OneByteString._uninstantiable() {
     throw new UnsupportedError(
@@ -1226,6 +1227,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _TwoByteString extends _StringBase {
   factory _TwoByteString._uninstantiable() {
     throw new UnsupportedError(
@@ -1246,6 +1248,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalOneByteString extends _StringBase {
   factory _ExternalOneByteString._uninstantiable() {
     throw new UnsupportedError(
@@ -1263,6 +1266,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalTwoByteString extends _StringBase {
   factory _ExternalTwoByteString._uninstantiable() {
     throw new UnsupportedError(
diff --git a/runtime/lib/type_patch.dart b/runtime/lib/type_patch.dart
index 7551055..95defc8 100644
--- a/runtime/lib/type_patch.dart
+++ b/runtime/lib/type_patch.dart
@@ -12,18 +12,23 @@
 }
 
 // Equivalent of RawType.
+@pragma("vm.entry-point")
 class _Type extends _AbstractType {
   int get hashCode native "Type_getHashCode";
 }
 
 // Equivalent of RawTypeRef.
+@pragma("vm.entry-point")
 class _TypeRef extends _AbstractType {}
 
 // Equivalent of RawTypeParameter.
+@pragma("vm.entry-point")
 class _TypeParameter extends _AbstractType {}
 
 // Equivalent of RawBoundedType.
+@pragma("vm.entry-point")
 class _BoundedType extends _AbstractType {}
 
 // Equivalent of RawMixinAppType.
+@pragma("vm.entry-point")
 class _MixinAppType extends _AbstractType {}
diff --git a/runtime/lib/typed_data_patch.dart b/runtime/lib/typed_data_patch.dart
index ddabaf5..8c7a1e5 100644
--- a/runtime/lib/typed_data_patch.dart
+++ b/runtime/lib/typed_data_patch.dart
@@ -1,5 +1,4 @@
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-@pragma("vm.entry-point")
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
@@ -1898,6 +1897,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ByteBuffer implements ByteBuffer {
   final _TypedList _data;
 
@@ -2123,6 +2123,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int8List extends _TypedList with _IntListMixin implements Int8List {
   // Method(s) implementing List interface.
   int operator [](int index) {
@@ -2162,6 +2163,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint8List extends _TypedList with _IntListMixin implements Uint8List {
   // Methods implementing List interface.
   int operator [](int index) {
@@ -2201,6 +2203,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint8ClampedList extends _TypedList
     with _IntListMixin
     implements Uint8ClampedList {
@@ -2242,6 +2245,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int16List extends _TypedList with _IntListMixin implements Int16List {
   // Method(s) implementing List interface.
   int operator [](int index) {
@@ -2300,6 +2304,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint16List extends _TypedList with _IntListMixin implements Uint16List {
   // Method(s) implementing the List interface.
   int operator [](int index) {
@@ -2358,6 +2363,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int32List extends _TypedList with _IntListMixin implements Int32List {
   // Method(s) implementing the List interface.
   int operator [](int index) {
@@ -2405,6 +2411,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint32List extends _TypedList with _IntListMixin implements Uint32List {
   // Method(s) implementing the List interface.
   int operator [](int index) {
@@ -2452,6 +2459,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int64List extends _TypedList with _IntListMixin implements Int64List {
   // Method(s) implementing the List interface.
   int operator [](int index) {
@@ -2499,6 +2507,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint64List extends _TypedList with _IntListMixin implements Uint64List {
   // Method(s) implementing the List interface.
   int operator [](int index) {
@@ -2546,6 +2555,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float32List extends _TypedList
     with _DoubleListMixin
     implements Float32List {
@@ -2595,6 +2605,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float64List extends _TypedList
     with _DoubleListMixin
     implements Float64List {
@@ -2644,6 +2655,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float32x4List extends _TypedList
     with _Float32x4ListMixin
     implements Float32x4List {
@@ -2692,6 +2704,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int32x4List extends _TypedList
     with _Int32x4ListMixin
     implements Int32x4List {
@@ -2740,6 +2753,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float64x2List extends _TypedList
     with _Float64x2ListMixin
     implements Float64x2List {
@@ -2776,6 +2790,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalInt8Array extends _TypedList
     with _IntListMixin
     implements Int8List {
@@ -2805,6 +2820,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalUint8Array extends _TypedList
     with _IntListMixin
     implements Uint8List {
@@ -2834,6 +2850,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalUint8ClampedArray extends _TypedList
     with _IntListMixin
     implements Uint8ClampedList {
@@ -2863,6 +2880,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalInt16Array extends _TypedList
     with _IntListMixin
     implements Int16List {
@@ -2901,6 +2919,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalUint16Array extends _TypedList
     with _IntListMixin
     implements Uint16List {
@@ -2939,6 +2958,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalInt32Array extends _TypedList
     with _IntListMixin
     implements Int32List {
@@ -2976,6 +2996,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalUint32Array extends _TypedList
     with _IntListMixin
     implements Uint32List {
@@ -3014,6 +3035,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalInt64Array extends _TypedList
     with _IntListMixin
     implements Int64List {
@@ -3052,6 +3074,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalUint64Array extends _TypedList
     with _IntListMixin
     implements Uint64List {
@@ -3090,6 +3113,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalFloat32Array extends _TypedList
     with _DoubleListMixin
     implements Float32List {
@@ -3128,6 +3152,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalFloat64Array extends _TypedList
     with _DoubleListMixin
     implements Float64List {
@@ -3166,6 +3191,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalFloat32x4Array extends _TypedList
     with _Float32x4ListMixin
     implements Float32x4List {
@@ -3204,6 +3230,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalInt32x4Array extends _TypedList
     with _Int32x4ListMixin
     implements Int32x4List {
@@ -3242,6 +3269,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ExternalFloat64x2Array extends _TypedList
     with _Float64x2ListMixin
     implements Float64x2List {
@@ -3299,6 +3327,7 @@
   factory Float32x4.fromFloat64x2(Float64x2 v) native "Float32x4_fromFloat64x2";
 }
 
+@pragma("vm.entry-point")
 class _Float32x4 implements Float32x4 {
   Float32x4 operator +(Float32x4 other) native "Float32x4_add";
   Float32x4 operator -() native "Float32x4_negate";
@@ -3349,6 +3378,7 @@
       native "Int32x4_fromFloat32x4Bits";
 }
 
+@pragma("vm.entry-point")
 class _Int32x4 implements Int32x4 {
   Int32x4 operator |(Int32x4 other) native "Int32x4_or";
   Int32x4 operator &(Int32x4 other) native "Int32x4_and";
@@ -3393,6 +3423,7 @@
   factory Float64x2.fromFloat32x4(Float32x4 v) native "Float64x2_fromFloat32x4";
 }
 
+@pragma("vm.entry-point")
 class _Float64x2 implements Float64x2 {
   Float64x2 operator +(Float64x2 other) native "Float64x2_add";
   Float64x2 operator -() native "Float64x2_negate";
@@ -3462,6 +3493,7 @@
   final int length;
 }
 
+@pragma("vm.entry-point")
 class _Int8ArrayView extends _TypedListView
     with _IntListMixin
     implements Int8List {
@@ -3506,6 +3538,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint8ArrayView extends _TypedListView
     with _IntListMixin
     implements Uint8List {
@@ -3550,6 +3583,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint8ClampedArrayView extends _TypedListView
     with _IntListMixin
     implements Uint8ClampedList {
@@ -3595,6 +3629,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int16ArrayView extends _TypedListView
     with _IntListMixin
     implements Int16List {
@@ -3652,6 +3687,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint16ArrayView extends _TypedListView
     with _IntListMixin
     implements Uint16List {
@@ -3710,6 +3746,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int32ArrayView extends _TypedListView
     with _IntListMixin
     implements Int32List {
@@ -3755,6 +3792,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint32ArrayView extends _TypedListView
     with _IntListMixin
     implements Uint32List {
@@ -3800,6 +3838,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int64ArrayView extends _TypedListView
     with _IntListMixin
     implements Int64List {
@@ -3845,6 +3884,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Uint64ArrayView extends _TypedListView
     with _IntListMixin
     implements Uint64List {
@@ -3890,6 +3930,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float32ArrayView extends _TypedListView
     with _DoubleListMixin
     implements Float32List {
@@ -3935,6 +3976,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float64ArrayView extends _TypedListView
     with _DoubleListMixin
     implements Float64List {
@@ -3980,6 +4022,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float32x4ArrayView extends _TypedListView
     with _Float32x4ListMixin
     implements Float32x4List {
@@ -4025,6 +4068,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Int32x4ArrayView extends _TypedListView
     with _Int32x4ListMixin
     implements Int32x4List {
@@ -4070,6 +4114,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _Float64x2ArrayView extends _TypedListView
     with _Float64x2ListMixin
     implements Float64x2List {
@@ -4115,6 +4160,7 @@
   }
 }
 
+@pragma("vm.entry-point")
 class _ByteDataView implements ByteData {
   _ByteDataView(_TypedList typedData, int _offsetInBytes, int _lengthInBytes)
       : _typedData = typedData,
diff --git a/runtime/lib/weak_property.dart b/runtime/lib/weak_property.dart
index d4d5699..28a4352 100644
--- a/runtime/lib/weak_property.dart
+++ b/runtime/lib/weak_property.dart
@@ -4,6 +4,7 @@
 
 // part of "core_patch.dart";
 
+@pragma("vm.entry-point")
 class _WeakProperty {
   factory _WeakProperty(key, value) => _new(key, value);
 
diff --git a/runtime/observatory/tests/service/eval_regression_flutter20255_test.dart b/runtime/observatory/tests/service/eval_regression_flutter20255_test.dart
new file mode 100644
index 0000000..806aa0a
--- /dev/null
+++ b/runtime/observatory/tests/service/eval_regression_flutter20255_test.dart
@@ -0,0 +1,111 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+// VMOptions=--no-background-compilation --enable-inlining-annotations
+
+import 'dart:async';
+import 'dart:developer';
+
+import 'package:observatory/service_io.dart';
+import 'package:unittest/unittest.dart';
+
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+const String NeverInline = 'NeverInline';
+
+class Base<T> {
+  String field;
+
+  Base(this.field);
+  String foo() => 'Base-$field';
+}
+
+class Sub<T> extends Base<T> {
+  String field;
+
+  Sub(this.field) : super(field);
+  String foo() {
+    debugger();
+    return 'Sub-$field';
+  }
+}
+
+class ISub<T> implements Base<T> {
+  String field;
+
+  ISub(this.field);
+  String foo() => 'ISub-$field';
+}
+
+class Box<T> {
+  T value;
+
+  @NeverInline
+  void setValue(T value) {
+    this.value = value;
+  }
+}
+
+final objects = <Base>[
+  new Base<int>('b'),
+  new Sub<double>('a'),
+  new ISub<bool>('c')
+];
+
+String triggerTypeTestingStubGeneration() {
+  final Box<Object> box = new Box<Base>();
+  for (int i = 0; i < 1000000; ++i) {
+    box.setValue(objects.last);
+  }
+  return 'tts-generated';
+}
+
+void testFunction() {
+  // Triggers the debugger, which will evaluate an expression in the context of
+  // [Sub<double>], which will make a subclass of [Base<T>].
+  print(objects[1].foo());
+
+  triggerTypeTestingStubGeneration();
+
+  // Triggers the debugger, which will evaluate an expression in the context of
+  // [Sub<double>], which will make a subclass of [Base<T>].
+  print(objects[1].foo());
+}
+
+Future triggerEvaluation(Isolate isolate) async {
+  ServiceMap stack = await isolate.getStack();
+
+  // Make sure we are in the right place.
+  expect(stack.type, equals('Stack'));
+  expect(stack['frames'].length, greaterThanOrEqualTo(2));
+  expect(stack['frames'][0].function.name, equals('foo'));
+  expect(stack['frames'][0].function.dartOwner.name, equals('Sub'));
+
+  // Trigger an evaluation, which will create a new subclass of Base<T>.
+  final dynamic result =
+      await isolate.evalFrame(0, 'this.field + " world \$T"');
+  if (result is DartError) {
+    throw 'Got an error "$result", expected result of expression evaluation.';
+  }
+  expect(result.valueAsString, equals('a world double'));
+
+  // Trigger an optimization of a type testing stub (and usage of it).
+  final dynamic result2 =
+      await isolate.evalFrame(0, 'triggerTypeTestingStubGeneration()');
+  if (result2 is DartError) {
+    throw 'Got an error "$result", expected result of expression evaluation.';
+  }
+  expect(result2.valueAsString, equals('tts-generated'));
+}
+
+final testSteps = <IsolateTest>[
+  hasStoppedAtBreakpoint,
+  triggerEvaluation,
+  resumeIsolate,
+  hasStoppedAtBreakpoint,
+  triggerEvaluation,
+  resumeIsolate,
+];
+
+main(args) => runIsolateTests(args, testSteps, testeeConcurrent: testFunction);
diff --git a/runtime/observatory/tests/service/get_version_rpc_test.dart b/runtime/observatory/tests/service/get_version_rpc_test.dart
index e6aea8a..4a11b98 100644
--- a/runtime/observatory/tests/service/get_version_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_version_rpc_test.dart
@@ -13,7 +13,7 @@
     var result = await vm.invokeRpcNoUpgrade('getVersion', {});
     expect(result['type'], equals('Version'));
     expect(result['major'], equals(3));
-    expect(result['minor'], equals(9));
+    expect(result['minor'], equals(10));
     expect(result['_privateMajor'], equals(0));
     expect(result['_privateMinor'], equals(0));
   },
diff --git a/runtime/observatory/tests/service/invoke_test.dart b/runtime/observatory/tests/service/invoke_test.dart
new file mode 100644
index 0000000..baed16c
--- /dev/null
+++ b/runtime/observatory/tests/service/invoke_test.dart
@@ -0,0 +1,105 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+// VMOptions=--error_on_bad_type --error_on_bad_override
+
+import 'dart:async';
+import 'dart:developer';
+import 'package:observatory/service_io.dart';
+import 'package:unittest/unittest.dart';
+import 'service_test_common.dart';
+import 'test_helper.dart';
+
+libraryFunction() => "foobar1";
+
+class Klass {
+  static classFunction(x) => "foobar2" + x;
+  instanceFunction(x, y) => "foobar3" + x + y;
+}
+
+var instance;
+
+var apple;
+var banana;
+
+void testFunction() {
+  instance = new Klass();
+  apple = "apple";
+  banana = "banana";
+  debugger();
+}
+
+var tests = <IsolateTest>[
+  hasStoppedAtBreakpoint,
+  (Isolate isolate) async {
+    Library lib = isolate.rootLibrary;
+    await lib.load();
+    Class cls = lib.classes.singleWhere((cls) => cls.name == "Klass");
+    Field field =
+        lib.variables.singleWhere((field) => field.name == "instance");
+    await field.load();
+    Instance instance = field.staticValue;
+    field = lib.variables.singleWhere((field) => field.name == "apple");
+    await field.load();
+    Instance apple = field.staticValue;
+    field = lib.variables.singleWhere((field) => field.name == "banana");
+    await field.load();
+    Instance banana = field.staticValue;
+
+    dynamic result = await isolate.invokeRpc("invoke", {
+      "receiverId": lib.id,
+      "selector": "libraryFunction",
+      "argumentIds": []
+    });
+    print(result);
+    expect(result.valueAsString, equals('foobar1'));
+
+    result = await isolate.invokeRpc("invoke", {
+      "receiverId": cls.id,
+      "selector": "classFunction",
+      "argumentIds": [apple.id]
+    });
+    print(result);
+    expect(result.valueAsString, equals('foobar2apple'));
+
+    result = await isolate.invokeRpc("invoke", {
+      "receiverId": instance.id,
+      "selector": "instanceFunction",
+      "argumentIds": [apple.id, banana.id]
+    });
+    print(result);
+    expect(result.valueAsString, equals('foobar3applebanana'));
+
+    // Wrong arity.
+    await expectError(() => isolate.invokeRpc("invoke", {
+          "receiverId": instance.id,
+          "selector": "instanceFunction",
+          "argumentIds": [apple.id]
+        }));
+
+    // No such target.
+    await expectError(() => isolate.invokeRpc("invoke", {
+          "receiverId": instance.id,
+          "selector": "functionDoesNotExist",
+          "argumentIds": [apple.id]
+        }));
+  },
+  resumeIsolate,
+];
+
+expectError(func) async {
+  bool gotException = false;
+  dynamic result;
+  try {
+    result = await func();
+    expect(result.type, equals('Error')); // dart1 semantics
+  } on ServerRpcException catch (e) {
+    expect(e.code, equals(ServerRpcException.kExpressionCompilationError));
+    gotException = true;
+  }
+  if (result?.type != 'Error') {
+    expect(gotException, true); // dart2 semantics
+  }
+}
+
+main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction);
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index 11ea88f..62a65e9 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -4,7 +4,7 @@
 
 [ $compiler == app_jitk ]
 add_breakpoint_rpc_test: RuntimeError
-async_generator_breakpoint_test: RuntimeError
+async_generator_breakpoint_test: Skip # No incremental compiler available.
 async_next_regession_18877_test: RuntimeError
 async_next_test: RuntimeError
 async_scope_test: RuntimeError
@@ -17,7 +17,7 @@
 awaiter_async_stack_contents_2_test: RuntimeError
 awaiter_async_stack_contents_test: RuntimeError
 bad_reload_test: RuntimeError
-break_on_activation_test: RuntimeError
+break_on_activation_test: Skip # No incremental compiler available.
 break_on_function_test: RuntimeError
 breakpoint_in_parts_class_test: RuntimeError
 breakpoint_two_args_checked_test: RuntimeError
@@ -25,36 +25,37 @@
 causal_async_stack_presence_test: RuntimeError
 causal_async_star_stack_contents_test: RuntimeError
 causal_async_star_stack_presence_test: RuntimeError
+code_test: RuntimeError # Issue 34143
 complex_reload_test: RuntimeError
-debugger_inspect_test: Skip # Timeout
+debugger_inspect_test: Skip # No incremental compiler available.
 debugger_location_second_test: RuntimeError
 debugger_location_test: RuntimeError
 debugging_inlined_finally_test: RuntimeError
 debugging_test: RuntimeError
-developer_service_get_isolate_id_test: RuntimeError
-eval_internal_class_test: RuntimeError
-eval_test: RuntimeError
+developer_service_get_isolate_id_test: Skip #  No incremental compiler available.
+eval_internal_class_test: Skip # No incremental compiler available.
+eval_regression_flutter20255_test: Skip # No incremental compiler available.
+eval_test: Skip # No incremental compiler available.
 evaluate_activation_in_method_class_test: RuntimeError
-evaluate_activation_test/instance: RuntimeError
-evaluate_activation_test/none: RuntimeError
-evaluate_activation_test/scope: RuntimeError
-evaluate_async_closure_test: RuntimeError
+evaluate_activation_test: Skip # No incremental compiler available.
+evaluate_async_closure_test: Skip # No incremental compiler available.
 evaluate_class_type_parameters_test: RuntimeError
 evaluate_in_async_activation_test: RuntimeError
 evaluate_in_async_star_activation_test: RuntimeError
 evaluate_in_frame_rpc_test: RuntimeError
-evaluate_in_frame_with_scope_test: RuntimeError
+evaluate_in_frame_with_scope_test: Skip # No incremental compiler available.
 evaluate_in_sync_star_activation_test: RuntimeError
-evaluate_with_scope_test: RuntimeError
-get_instances_rpc_test: RuntimeError
-get_object_rpc_test: RuntimeError
-get_retaining_path_rpc_test: RuntimeError
+evaluate_with_scope_test: Skip # No incremental compiler available.
+get_instances_rpc_test: Skip # No incremental compiler available.
+get_object_rpc_test: Skip # No incremental compiler available.
+get_retained_size_rpc_test: Skip # No incremental compiler available.
+get_retaining_path_rpc_test: Skip # No incremental compiler available.
 get_source_report_test: RuntimeError
 get_stack_rpc_test: RuntimeError
-get_user_level_retaining_path_rpc_test: RuntimeError
+get_user_level_retaining_path_rpc_test: Skip # No incremental compiler available.
 get_vm_rpc_test: RuntimeError
 get_vm_timeline_rpc_test: RuntimeError
-instance_field_order_rpc_test: RuntimeError
+instance_field_order_rpc_test: Skip # No incremental compiler available.
 issue_25465_test: RuntimeError
 issue_27238_test: RuntimeError
 issue_27287_test: RuntimeError
@@ -83,7 +84,7 @@
 next_through_simple_linear_2_test: RuntimeError
 next_through_simple_linear_test: RuntimeError
 parameters_in_scope_at_entry_test: RuntimeError
-pause_on_exceptions_test: Skip # Timeout
+pause_on_exceptions_test: Skip # No incremental compiler available.
 pause_on_unhandled_async_exceptions2_test: RuntimeError
 pause_on_unhandled_async_exceptions_test: RuntimeError
 positive_token_pos_test: RuntimeError
@@ -97,6 +98,7 @@
 steal_breakpoint_test: RuntimeError
 step_into_async_no_await_test: RuntimeError
 step_over_await_test: RuntimeError
+step_test: RuntimeError # Issue 34143
 step_through_arithmetic_test: RuntimeError
 step_through_constructor_calls_test: RuntimeError
 step_through_constructor_test: RuntimeError
@@ -219,7 +221,7 @@
 
 [ $compiler == dartk && ($arch == simarm || $arch == simarm64 || $arch == simdbc64) ]
 add_breakpoint_rpc_kernel_test: RuntimeError # Issue #33087
-async_generator_breakpoint_test: Pass, RuntimeError, Crash # dartbug.com/33175 for the crash
+async_generator_breakpoint_test: Skip # No incremental compiler available.
 async_single_step_out_test: RuntimeError
 bad_reload_test: Skip # Times out on sim architectures, also RuntimeError.
 break_on_activation_test: RuntimeError # Issue #33087
@@ -227,6 +229,7 @@
 debugger_inspect_test: RuntimeError, Timeout # Issue #33087
 developer_service_get_isolate_id_test: RuntimeError # Issue #33087
 eval_internal_class_test: RuntimeError # Issue #33087
+eval_regression_flutter20255_test: RuntimeError # "No incremental compiler available for this isolate"
 eval_test: RuntimeError # Issue #33087
 evaluate_activation_test/none: RuntimeError # Issue #33087
 evaluate_async_closure_test: RuntimeError # Issue #33087
diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h
index 8c09582..0959729 100644
--- a/runtime/platform/globals.h
+++ b/runtime/platform/globals.h
@@ -140,11 +140,6 @@
 #error DART_PRECOMPILED_RUNTIME and DART_NOSNAPSHOT are mutually exclusive
 #endif  // defined(DART_PRECOMPILED_RUNTIME) && defined(DART_NOSNAPSHOT)
 
-#if defined(DART_PRECOMPILED_RUNTIME) || defined(DART_PRECOMPILER)
-// TODO(zra): Fix GN build file not to define DART_USE_INTERPRETER in this case.
-#undef DART_USE_INTERPRETER
-#endif  // defined(DART_PRECOMPILED_RUNTIME) || defined(DART_PRECOMPILER)
-
 #if defined(DART_PRECOMPILED_RUNTIME)
 #define NOT_IN_PRECOMPILED(code)
 #else
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index 0217714..6ad3188 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -2735,6 +2735,11 @@
     THR_Print("Finalize %s\n", cls.ToCString());
   }
 
+#if !defined(PRODUCT)
+  TimelineDurationScope tds(thread, Timeline::GetCompilerStream(),
+                            "ClassFinalizer::FinalizeClass");
+#endif  // !defined(PRODUCT)
+
 #if !defined(DART_PRECOMPILED_RUNTIME)
   // If loading from a kernel, make sure that the class is fully loaded.
   // Top level classes are always fully loaded.
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 7bef7db..df462d3 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -1769,9 +1769,9 @@
 
       RawInstructions* instr = d->ReadInstructions();
 
-      code->ptr()->entry_point_ = Instructions::UncheckedEntryPoint(instr);
-      code->ptr()->checked_entry_point_ =
-          Instructions::CheckedEntryPoint(instr);
+      code->ptr()->entry_point_ = Instructions::EntryPoint(instr);
+      code->ptr()->monomorphic_entry_point_ =
+          Instructions::MonomorphicEntryPoint(instr);
       NOT_IN_PRECOMPILED(code->ptr()->active_instructions_ = instr);
       code->ptr()->instructions_ = instr;
 
@@ -1779,9 +1779,9 @@
       if (d->kind() == Snapshot::kFullJIT) {
         RawInstructions* instr = d->ReadInstructions();
         code->ptr()->active_instructions_ = instr;
-        code->ptr()->entry_point_ = Instructions::UncheckedEntryPoint(instr);
-        code->ptr()->checked_entry_point_ =
-            Instructions::CheckedEntryPoint(instr);
+        code->ptr()->entry_point_ = Instructions::EntryPoint(instr);
+        code->ptr()->monomorphic_entry_point_ =
+            Instructions::MonomorphicEntryPoint(instr);
       }
 #endif  // !DART_PRECOMPILED_RUNTIME
 
diff --git a/runtime/vm/compiler/aot/aot_call_specializer.cc b/runtime/vm/compiler/aot/aot_call_specializer.cc
index 11fe560..e59a7b3 100644
--- a/runtime/vm/compiler/aot/aot_call_specializer.cc
+++ b/runtime/vm/compiler/aot/aot_call_specializer.cc
@@ -607,6 +607,16 @@
         }
         break;
       }
+#ifndef TARGET_ARCH_DBC
+      case Token::kNEGATE: {
+        Value* left_value = instr->PushArgumentAt(receiver_index)->value();
+        left_value = PrepareReceiverOfDevirtualizedCall(left_value, kMintCid);
+        replacement = new (Z)
+            UnaryInt64OpInstr(Token::kNEGATE, left_value, Thread::kNoDeoptId,
+                              Instruction::kNotSpeculative);
+        break;
+      }
+#endif
       case Token::kSHL:
       case Token::kSHR: {
         Value* left_value = instr->PushArgumentAt(receiver_index)->value();
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index b5629ec..841c1b8 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -701,23 +701,6 @@
 
   AddSelector(Symbols::Call());  // For speed, not correctness.
 
-  // Allocated from C++.
-  Class& cls = Class::Handle(Z);
-  for (intptr_t cid = kInstanceCid; cid < kNumPredefinedCids; cid++) {
-    ASSERT(isolate()->class_table()->IsValidIndex(cid));
-    if (!isolate()->class_table()->HasValidClassAt(cid)) {
-      continue;
-    }
-    if ((cid == kTypeArgumentsCid) || (cid == kDynamicCid) ||
-        (cid == kVoidCid) || (cid == kFreeListElement) ||
-        (cid == kForwardingCorpse)) {
-      continue;
-    }
-    cls = isolate()->class_table()->At(cid);
-    AddInstantiatedClass(cls);
-    entry_points_printer.AddInstantiatedClass(cls);
-  }
-
   AddEntryPoints(vm_entry_points, &entry_points_printer);
   AddEntryPoints(embedder_entry_points, &entry_points_printer);
 
@@ -1523,7 +1506,7 @@
       if (cls.has_pragma()) {
         // Check for @pragma on the class itself.
         metadata ^= lib.GetMetadata(cls);
-        if (metadata_defines_entrypoint() != EntryPointPragma::kAlways) {
+        if (metadata_defines_entrypoint() == EntryPointPragma::kAlways) {
           AddInstantiatedClass(cls);
         }
 
@@ -2717,18 +2700,8 @@
           const Array& arguments_descriptor =
               Array::Handle(zone, call->GetArgumentsDescriptor());
           const Function& target = call->function();
-          MethodRecognizer::Kind recognized_kind =
-              MethodRecognizer::RecognizeKind(target);
-          int num_args_checked = 0;
-          switch (recognized_kind) {
-            case MethodRecognizer::kDoubleFromInteger:
-            case MethodRecognizer::kMathMin:
-            case MethodRecognizer::kMathMax:
-              num_args_checked = 2;
-              break;
-            default:
-              break;
-          }
+          int num_args_checked =
+              MethodRecognizer::NumArgsCheckedForStaticCall(target);
           const ICData& ic_data = ICData::ZoneHandle(
               zone, ICData::New(function, String::Handle(zone, target.name()),
                                 arguments_descriptor, call->deopt_id(),
diff --git a/runtime/vm/compiler/assembler/assembler_arm64_test.cc b/runtime/vm/compiler/assembler/assembler_arm64_test.cc
index a41fad24..bf690bc 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64_test.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64_test.cc
@@ -577,7 +577,7 @@
   typedef intptr_t (*Semaphore32)() DART_UNUSED;
   // Lower word has been atomically switched from 40 to 42k, whereas upper word
   // is unchanged at 40.
-  EXPECT_EQ(42 + (40l << 32),
+  EXPECT_EQ(42 + (DART_INT64_C(40) << 32),
             EXECUTE_TEST_CODE_INT64(Semaphore32, test->entry()));
 }
 
@@ -604,7 +604,7 @@
   typedef intptr_t (*FailedSemaphore32)() DART_UNUSED;
   // Lower word has had the failure code (1) added to it.  Upper word is
   // unchanged at 40.
-  EXPECT_EQ(41 + (40l << 32),
+  EXPECT_EQ(41 + (DART_INT64_C(40) << 32),
             EXECUTE_TEST_CODE_INT64(FailedSemaphore32, test->entry()));
 }
 
diff --git a/runtime/vm/compiler/assembler/disassembler_kbc.cc b/runtime/vm/compiler/assembler/disassembler_kbc.cc
index 9b05506..69d4736 100644
--- a/runtime/vm/compiler/assembler/disassembler_kbc.cc
+++ b/runtime/vm/compiler/assembler/disassembler_kbc.cc
@@ -212,8 +212,7 @@
     case KernelBytecode::kPushConstant:
     case KernelBytecode::kStaticCall:
     case KernelBytecode::kIndirectStaticCall:
-    case KernelBytecode::kInstanceCall1:
-    case KernelBytecode::kInstanceCall2:
+    case KernelBytecode::kInstanceCall:
     case KernelBytecode::kInstanceCall1Opt:
     case KernelBytecode::kInstanceCall2Opt:
     case KernelBytecode::kStoreStaticTOS:
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index 0a58603..bdf8ee9 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -1730,9 +1730,9 @@
       break;
   }
 
-  if ((kSmiBits < 32) && (unboxed == kTagged) && phi->Type()->IsInt() &&
+  if ((unboxed == kTagged) && phi->Type()->IsInt() &&
       RangeUtils::Fits(phi->range(), RangeBoundary::kRangeBoundaryInt64)) {
-    // On 32-bit platforms conservatively unbox phis that:
+    // Conservatively unbox phis that:
     //   - are proven to be of type Int;
     //   - fit into 64bits range;
     //   - have either constants or Box() operations as inputs;
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index f64ebd8..1fdbcc1 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -1066,7 +1066,7 @@
   __ LoadFromOffset(kWord, R0, SP,
                     (ic_data.CountWithoutTypeArgs() - 1) * kWordSize);
   __ LoadUniqueObject(CODE_REG, initial_stub);
-  __ ldr(LR, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(LR, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ LoadUniqueObject(R9, ic_data);
   __ blx(LR);
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index d9eba6e..3b03a79 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -1039,7 +1039,7 @@
   __ Comment("SwitchableCall");
   __ LoadFromOffset(R0, SP, (ic_data.CountWithoutTypeArgs() - 1) * kWordSize);
   __ LoadUniqueObject(CODE_REG, initial_stub);
-  __ ldr(TMP, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(TMP, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ LoadUniqueObject(R5, ic_data);
   __ blr(TMP);
 
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index 427a297..bac9b48 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -1054,7 +1054,7 @@
   __ Comment("SwitchableCall");
   __ movq(RDI, Address(RSP, (ic_data.CountWithoutTypeArgs() - 1) * kWordSize));
   __ LoadUniqueObject(CODE_REG, initial_stub);
-  __ movq(RCX, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ movq(RCX, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ LoadUniqueObject(RBX, ic_data);
   __ call(RCX);
 
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index adfad6d..3c6a665 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -2437,9 +2437,17 @@
       if (rhs == 0) {
         return left()->definition();
       } else if (rhs < 0) {
+        // Instruction will always throw on negative rhs operand.
+        if (!CanDeoptimize()) {
+          // For non-speculative operations (no deopt), let
+          // the code generator deal with throw on slowpath.
+          break;
+        }
+        ASSERT(GetDeoptId() != Thread::kNoDeoptId);
         DeoptimizeInstr* deopt =
             new DeoptimizeInstr(ICData::kDeoptBinarySmiOp, GetDeoptId());
         flow_graph->InsertBefore(this, deopt, env(), FlowGraph::kEffect);
+        // Replace with zero since it always throws.
         return CreateConstantResult(flow_graph, Integer::Handle(Smi::New(0)));
       }
       break;
@@ -2450,10 +2458,18 @@
         return left()->definition();
       } else if ((rhs < 0) || (rhs >= kMaxShift)) {
         if ((rhs < 0) || !is_truncating()) {
+          // Instruction will always throw on negative rhs operand.
+          if (!CanDeoptimize()) {
+            // For non-speculative operations (no deopt), let
+            // the code generator deal with throw on slowpath.
+            break;
+          }
+          ASSERT(GetDeoptId() != Thread::kNoDeoptId);
           DeoptimizeInstr* deopt =
               new DeoptimizeInstr(ICData::kDeoptBinarySmiOp, GetDeoptId());
           flow_graph->InsertBefore(this, deopt, env(), FlowGraph::kEffect);
         }
+        // Replace with zero since it overshifted or always throws.
         return CreateConstantResult(flow_graph, Integer::Handle(Smi::New(0)));
       }
       break;
@@ -4103,18 +4119,8 @@
       (ic_data() == NULL)) {
     const Array& arguments_descriptor =
         Array::Handle(zone, GetArgumentsDescriptor());
-    MethodRecognizer::Kind recognized_kind =
-        MethodRecognizer::RecognizeKind(function());
-    int num_args_checked = 0;
-    switch (recognized_kind) {
-      case MethodRecognizer::kDoubleFromInteger:
-      case MethodRecognizer::kMathMin:
-      case MethodRecognizer::kMathMax:
-        num_args_checked = 2;
-        break;
-      default:
-        break;
-    }
+    const int num_args_checked =
+        MethodRecognizer::NumArgsCheckedForStaticCall(function());
     call_ic_data = compiler->GetOrAddStaticCallICData(
         deopt_id(), function(), arguments_descriptor, num_args_checked,
         rebind_rule_);
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index f9e8e41..a186bfa 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -6090,7 +6090,9 @@
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::Pair(Location::RequiresRegister(),
                                     Location::RequiresRegister()));
-  if (ConstantInstr* constant = right()->definition()->AsConstant()) {
+  if (RangeUtils::IsPositive(shift_range()) &&
+      right()->definition()->IsConstant()) {
+    ConstantInstr* constant = right()->definition()->AsConstant();
     summary->set_in(1, Location::Constant(constant));
   } else {
     summary->set_in(1, Location::Pair(Location::RequiresRegister(),
@@ -6114,7 +6116,7 @@
     EmitShiftInt64ByConstant(compiler, op_kind(), out_lo, out_hi, left_lo,
                              left_hi, locs()->in(1).constant());
   } else {
-    // Code for a variable shift amount.
+    // Code for a variable shift amount (or constant that throws).
     PairLocation* right_pair = locs()->in(1).AsPairLocation();
     Register right_lo = right_pair->At(0).reg();
     Register right_hi = right_pair->At(1).reg();
@@ -6228,7 +6230,9 @@
   LocationSummary* summary = new (zone) LocationSummary(
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::RequiresRegister());
-  if (ConstantInstr* constant = right()->definition()->AsConstant()) {
+  if (RangeUtils::IsPositive(shift_range()) &&
+      right()->definition()->IsConstant()) {
+    ConstantInstr* constant = right()->definition()->AsConstant();
     summary->set_in(1, Location::Constant(constant));
   } else {
     summary->set_in(1, Location::Pair(Location::RequiresRegister(),
@@ -6248,6 +6252,7 @@
     EmitShiftUint32ByConstant(compiler, op_kind(), out, left,
                               locs()->in(1).constant());
   } else {
+    // Code for a variable shift amount (or constant that throws).
     PairLocation* right_pair = locs()->in(1).AsPairLocation();
     Register right_lo = right_pair->At(0).reg();
     Register right_hi = right_pair->At(1).reg();
@@ -6338,7 +6343,6 @@
 }
 
 void UnaryInt64OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  ASSERT(op_kind() == Token::kBIT_NOT);
   PairLocation* left_pair = locs()->in(0).AsPairLocation();
   Register left_lo = left_pair->At(0).reg();
   Register left_hi = left_pair->At(1).reg();
@@ -6346,8 +6350,20 @@
   PairLocation* out_pair = locs()->out(0).AsPairLocation();
   Register out_lo = out_pair->At(0).reg();
   Register out_hi = out_pair->At(1).reg();
-  __ mvn(out_lo, Operand(left_lo));
-  __ mvn(out_hi, Operand(left_hi));
+
+  switch (op_kind()) {
+    case Token::kBIT_NOT:
+      __ mvn(out_lo, Operand(left_lo));
+      __ mvn(out_hi, Operand(left_hi));
+      break;
+    case Token::kNEGATE:
+      __ rsbs(out_lo, left_lo, Operand(0));
+      __ sbc(out_hi, out_hi, Operand(out_hi));
+      __ sub(out_hi, out_hi, Operand(left_hi));
+      break;
+    default:
+      UNREACHABLE();
+  }
 }
 
 CompileType BinaryUint32OpInstr::ComputeType() const {
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index 0b8f0e3..99f9646 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -5398,7 +5398,9 @@
   LocationSummary* summary = new (zone) LocationSummary(
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::RequiresRegister());
-  summary->set_in(1, Location::RegisterOrConstant(right()));
+  summary->set_in(1, RangeUtils::IsPositive(shift_range())
+                         ? Location::RegisterOrConstant(right())
+                         : Location::RequiresRegister());
   summary->set_out(0, Location::RequiresRegister());
   return summary;
 }
@@ -5412,7 +5414,7 @@
     EmitShiftInt64ByConstant(compiler, op_kind(), out, left,
                              locs()->in(1).constant());
   } else {
-    // Code for a variable shift amount.
+    // Code for a variable shift amount (or constant that throws).
     Register shift = locs()->in(1).reg();
 
     // Jump to a slow path if shift is larger than 63 or less than 0.
@@ -5507,7 +5509,9 @@
   LocationSummary* summary = new (zone) LocationSummary(
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::RequiresRegister());
-  summary->set_in(1, Location::RegisterOrConstant(right()));
+  summary->set_in(1, RangeUtils::IsPositive(shift_range())
+                         ? Location::RegisterOrConstant(right())
+                         : Location::RequiresRegister());
   summary->set_out(0, Location::RequiresRegister());
   return summary;
 }
@@ -5520,6 +5524,7 @@
     EmitShiftUint32ByConstant(compiler, op_kind(), out, left,
                               locs()->in(1).constant());
   } else {
+    // Code for a variable shift amount (or constant that throws).
     const Register right = locs()->in(1).reg();
     const bool shift_count_in_range =
         IsShiftCountInRange(kUint32ShiftCountLimit);
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index e6e8a06..b75054d 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -5497,7 +5497,9 @@
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::Pair(Location::RequiresRegister(),
                                     Location::RequiresRegister()));
-  if (ConstantInstr* constant = right()->definition()->AsConstant()) {
+  if (RangeUtils::IsPositive(shift_range()) &&
+      right()->definition()->IsConstant()) {
+    ConstantInstr* constant = right()->definition()->AsConstant();
     summary->set_in(1, Location::Constant(constant));
   } else {
     summary->set_in(1, Location::Pair(Location::RegisterLocation(ECX),
@@ -5522,7 +5524,7 @@
     EmitShiftInt64ByConstant(compiler, op_kind(), left_lo, left_hi,
                              locs()->in(1).constant());
   } else {
-    // Code for a variable shift amount.
+    // Code for a variable shift amount (or constant that throws).
     ASSERT(locs()->in(1).AsPairLocation()->At(0).reg() == ECX);
     Register right_hi = locs()->in(1).AsPairLocation()->At(1).reg();
 
@@ -5638,7 +5640,9 @@
   LocationSummary* summary = new (zone) LocationSummary(
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::RequiresRegister());
-  if (ConstantInstr* constant = right()->definition()->AsConstant()) {
+  if (RangeUtils::IsPositive(shift_range()) &&
+      right()->definition()->IsConstant()) {
+    ConstantInstr* constant = right()->definition()->AsConstant();
     summary->set_in(1, Location::Constant(constant));
   } else {
     summary->set_in(1, Location::Pair(Location::RegisterLocation(ECX),
@@ -5657,7 +5661,7 @@
     EmitShiftUint32ByConstant(compiler, op_kind(), left,
                               locs()->in(1).constant());
   } else {
-    // Code for a variable shift amount.
+    // Code for a variable shift amount (or constant that throws).
     ASSERT(locs()->in(1).AsPairLocation()->At(0).reg() == ECX);
     Register right_hi = locs()->in(1).AsPairLocation()->At(1).reg();
 
@@ -5745,7 +5749,6 @@
 }
 
 void UnaryInt64OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  ASSERT(op_kind() == Token::kBIT_NOT);
   PairLocation* left_pair = locs()->in(0).AsPairLocation();
   Register left_lo = left_pair->At(0).reg();
   Register left_hi = left_pair->At(1).reg();
@@ -5754,8 +5757,19 @@
   Register out_hi = out_pair->At(1).reg();
   ASSERT(out_lo == left_lo);
   ASSERT(out_hi == left_hi);
-  __ notl(left_lo);
-  __ notl(left_hi);
+  switch (op_kind()) {
+    case Token::kBIT_NOT:
+      __ notl(left_lo);
+      __ notl(left_hi);
+      break;
+    case Token::kNEGATE:
+      __ negl(left_lo);
+      __ adcl(left_hi, Immediate(0));
+      __ negl(left_hi);
+      break;
+    default:
+      UNREACHABLE();
+  }
 }
 
 CompileType BinaryUint32OpInstr::ComputeType() const {
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index e2f8f90..be25c2b 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -1033,7 +1033,7 @@
 void TailCallInstr::PrintOperandsTo(BufferFormatter* f) const {
   const char* name = "<unknown code>";
   if (code_.IsStubCode()) {
-    name = StubCode::NameOfStub(code_.UncheckedEntryPoint());
+    name = StubCode::NameOfStub(code_.EntryPoint());
   } else {
     const Object& owner = Object::Handle(code_.owner());
     if (owner.IsFunction()) {
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index f36a8b2..6d0a489 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -5326,9 +5326,32 @@
   //   out = left % right
   // or
   //   out = left / right.
+  //
+  // Note that since 64-bit division requires twice as many cycles
+  // and has much higher latency compared to the 32-bit division,
+  // even for this non-speculative 64-bit path we add a "fast path".
+  // Integers are untagged at this stage, so testing if sign extending
+  // the lower half of each operand equals the full operand, effectively
+  // tests if the values fit in 32-bit operands (and the slightly
+  // dangerous division by -1 has been handled above already).
   ASSERT(left == RAX);
+  ASSERT(right != RDX);  // available at this stage
+  Label div_64;
+  Label div_merge;
+  __ movsxd(RDX, left);
+  __ cmpq(RDX, left);
+  __ j(NOT_EQUAL, &div_64, Assembler::kNearJump);
+  __ movsxd(RDX, right);
+  __ cmpq(RDX, right);
+  __ j(NOT_EQUAL, &div_64, Assembler::kNearJump);
+  __ cdq();         // sign-ext eax into edx:eax
+  __ idivl(right);  // quotient eax, remainder edx
+  __ movsxd(out, out);
+  __ jmp(&div_merge, Assembler::kNearJump);
+  __ Bind(&div_64);
   __ cqo();         // sign-ext rax into rdx:rax
   __ idivq(right);  // quotient rax, remainder rdx
+  __ Bind(&div_merge);
   if (op_kind == Token::kMOD) {
     ASSERT(out == RDX);
     ASSERT(tmp == RAX);
@@ -5587,7 +5610,9 @@
   LocationSummary* summary = new (zone) LocationSummary(
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::RequiresRegister());
-  summary->set_in(1, Location::FixedRegisterOrConstant(right(), RCX));
+  summary->set_in(1, RangeUtils::IsPositive(shift_range())
+                         ? Location::FixedRegisterOrConstant(right(), RCX)
+                         : Location::RegisterLocation(RCX));
   summary->set_out(0, Location::SameAsFirstInput());
   return summary;
 }
@@ -5602,7 +5627,7 @@
     EmitShiftInt64ByConstant(compiler, op_kind(), left,
                              locs()->in(1).constant());
   } else {
-    // Code for a variable shift amount.
+    // Code for a variable shift amount (or constant that throws).
     ASSERT(locs()->in(1).reg() == RCX);
 
     // Jump to a slow path if shift count is > 63 or negative.
@@ -5705,7 +5730,9 @@
   LocationSummary* summary = new (zone) LocationSummary(
       zone, kNumInputs, kNumTemps, LocationSummary::kCallOnSlowPath);
   summary->set_in(0, Location::RequiresRegister());
-  summary->set_in(1, Location::FixedRegisterOrConstant(right(), RCX));
+  summary->set_in(1, RangeUtils::IsPositive(shift_range())
+                         ? Location::FixedRegisterOrConstant(right(), RCX)
+                         : Location::RegisterLocation(RCX));
   summary->set_out(0, Location::SameAsFirstInput());
   return summary;
 }
@@ -5719,6 +5746,7 @@
     EmitShiftUint32ByConstant(compiler, op_kind(), left,
                               locs()->in(1).constant());
   } else {
+    // Code for a variable shift amount (or constant that throws).
     ASSERT(locs()->in(1).reg() == RCX);
 
     // Jump to a slow path if shift count is > 31 or negative.
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index 7b6458c..c1d4f2b 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -957,9 +957,10 @@
       if (block_->IsGraphEntry()) {
         inferred_type = param->parameter_type();
       }
-      // Best bet: use inferred type if it has a concrete class.
-      if ((inferred_type != NULL) &&
-          (inferred_type->ToNullableCid() != kDynamicCid)) {
+      // Best bet: use inferred type if it is a concrete class or int.
+      if ((inferred_type != nullptr) &&
+          ((inferred_type->ToNullableCid() != kDynamicCid) ||
+           inferred_type->IsNullableInt())) {
         TraceStrongModeType(this, inferred_type);
         return *inferred_type;
       }
diff --git a/runtime/vm/compiler/compiler_pass.cc b/runtime/vm/compiler/compiler_pass.cc
index 89196bc..dc2c77b 100644
--- a/runtime/vm/compiler/compiler_pass.cc
+++ b/runtime/vm/compiler/compiler_pass.cc
@@ -223,6 +223,7 @@
   INVOKE_PASS(TypePropagation);
   INVOKE_PASS(ApplyClassIds);
   INVOKE_PASS(TypePropagation);
+  INVOKE_PASS(ApplyICData);
   INVOKE_PASS(Canonicalize);
   INVOKE_PASS(BranchSimplify);
   INVOKE_PASS(IfConvert);
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
index 8401801..d8f9e1a 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
@@ -5,6 +5,7 @@
 #include "vm/compiler/frontend/base_flow_graph_builder.h"
 
 #include "vm/compiler/frontend/flow_graph_builder.h"  // For InlineExitCollector.
+#include "vm/compiler/jit/compiler.h"  // For Compiler::IsBackgroundCompilation().
 
 #if !defined(DART_PRECOMPILED_RUNTIME)
 
@@ -12,6 +13,7 @@
 namespace kernel {
 
 #define Z (zone_)
+#define I (thread_->isolate())
 
 Fragment& Fragment::operator+=(const Fragment& other) {
   if (entry == NULL) {
@@ -347,6 +349,27 @@
   return Fragment(argument);
 }
 
+Fragment BaseFlowGraphBuilder::GuardFieldLength(const Field& field,
+                                                intptr_t deopt_id) {
+  return Fragment(new (Z) GuardFieldLengthInstr(Pop(), field, deopt_id));
+}
+
+Fragment BaseFlowGraphBuilder::GuardFieldClass(const Field& field,
+                                               intptr_t deopt_id) {
+  return Fragment(new (Z) GuardFieldClassInstr(Pop(), field, deopt_id));
+}
+
+const Field& BaseFlowGraphBuilder::MayCloneField(const Field& field) {
+  if ((Compiler::IsBackgroundCompilation() ||
+       FLAG_force_clone_compiler_objects) &&
+      field.IsOriginal()) {
+    return Field::ZoneHandle(Z, field.CloneFromOriginal());
+  } else {
+    ASSERT(field.IsZoneHandle());
+    return field;
+  }
+}
+
 Fragment BaseFlowGraphBuilder::StoreInstanceField(
     TokenPosition position,
     intptr_t offset,
@@ -360,6 +383,65 @@
   return Fragment(store);
 }
 
+Fragment BaseFlowGraphBuilder::StoreInstanceField(
+    const Field& field,
+    bool is_initialization_store,
+    StoreBarrierType emit_store_barrier) {
+  Value* value = Pop();
+  if (value->BindsToConstant()) {
+    emit_store_barrier = kNoStoreBarrier;
+  }
+
+  StoreInstanceFieldInstr* store = new (Z)
+      StoreInstanceFieldInstr(MayCloneField(field), Pop(), value,
+                              emit_store_barrier, TokenPosition::kNoSource);
+  store->set_is_initialization(is_initialization_store);
+
+  return Fragment(store);
+}
+
+Fragment BaseFlowGraphBuilder::StoreInstanceFieldGuarded(
+    const Field& field,
+    bool is_initialization_store) {
+  Fragment instructions;
+  const Field& field_clone = MayCloneField(field);
+  if (I->use_field_guards()) {
+    LocalVariable* store_expression = MakeTemporary();
+    instructions += LoadLocal(store_expression);
+    instructions += GuardFieldClass(field_clone, GetNextDeoptId());
+    instructions += LoadLocal(store_expression);
+    instructions += GuardFieldLength(field_clone, GetNextDeoptId());
+  }
+  instructions += StoreInstanceField(field_clone, is_initialization_store);
+  return instructions;
+}
+
+Fragment BaseFlowGraphBuilder::LoadStaticField() {
+  LoadStaticFieldInstr* load =
+      new (Z) LoadStaticFieldInstr(Pop(), TokenPosition::kNoSource);
+  Push(load);
+  return Fragment(load);
+}
+
+Fragment BaseFlowGraphBuilder::StoreStaticField(TokenPosition position,
+                                                const Field& field) {
+  return Fragment(
+      new (Z) StoreStaticFieldInstr(MayCloneField(field), Pop(), position));
+}
+
+Fragment BaseFlowGraphBuilder::StoreIndexed(intptr_t class_id) {
+  Value* value = Pop();
+  Value* index = Pop();
+  const StoreBarrierType emit_store_barrier =
+      value->BindsToConstant() ? kNoStoreBarrier : kEmitStoreBarrier;
+  StoreIndexedInstr* store = new (Z) StoreIndexedInstr(
+      Pop(),  // Array.
+      index, value, emit_store_barrier, Instance::ElementSizeFor(class_id),
+      class_id, kAlignedAccess, Thread::kNoDeoptId, TokenPosition::kNoSource);
+  Push(store);
+  return Fragment(store);
+}
+
 Fragment BaseFlowGraphBuilder::StoreLocal(TokenPosition position,
                                           LocalVariable* variable) {
   if (variable->is_captured()) {
@@ -565,6 +647,51 @@
   return Fragment(instr);
 }
 
+Fragment BaseFlowGraphBuilder::BooleanNegate() {
+  BooleanNegateInstr* negate = new (Z) BooleanNegateInstr(Pop());
+  Push(negate);
+  return Fragment(negate);
+}
+
+Fragment BaseFlowGraphBuilder::AllocateContext(intptr_t size) {
+  AllocateContextInstr* allocate =
+      new (Z) AllocateContextInstr(TokenPosition::kNoSource, size);
+  Push(allocate);
+  return Fragment(allocate);
+}
+
+Fragment BaseFlowGraphBuilder::CreateArray() {
+  Value* element_count = Pop();
+  CreateArrayInstr* array =
+      new (Z) CreateArrayInstr(TokenPosition::kNoSource,
+                               Pop(),  // Element type.
+                               element_count, GetNextDeoptId());
+  Push(array);
+  return Fragment(array);
+}
+
+Fragment BaseFlowGraphBuilder::InstantiateType(const AbstractType& type) {
+  Value* function_type_args = Pop();
+  Value* instantiator_type_args = Pop();
+  InstantiateTypeInstr* instr = new (Z) InstantiateTypeInstr(
+      TokenPosition::kNoSource, type, instantiator_type_args,
+      function_type_args, GetNextDeoptId());
+  Push(instr);
+  return Fragment(instr);
+}
+
+Fragment BaseFlowGraphBuilder::InstantiateTypeArguments(
+    const TypeArguments& type_arguments) {
+  Value* function_type_args = Pop();
+  Value* instantiator_type_args = Pop();
+  const Class& instantiator_class = Class::ZoneHandle(Z, function_.Owner());
+  InstantiateTypeArgumentsInstr* instr = new (Z) InstantiateTypeArgumentsInstr(
+      TokenPosition::kNoSource, type_arguments, instantiator_class,
+      instantiator_type_args, function_type_args, GetNextDeoptId());
+  Push(instr);
+  return Fragment(instr);
+}
+
 }  // namespace kernel
 }  // namespace dart
 
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.h b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
index 4a53a90..32b3d24 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.h
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
@@ -44,6 +44,9 @@
   Fragment& operator<<=(Instruction* next);
 
   Fragment closed();
+
+ private:
+  DISALLOW_ALLOCATION();
 };
 
 Fragment operator+(const Fragment& first, const Fragment& second);
@@ -134,10 +137,22 @@
   Fragment StoreLocal(TokenPosition position, LocalVariable* variable);
   Fragment StoreLocalRaw(TokenPosition position, LocalVariable* variable);
   Fragment LoadContextAt(int depth);
+  Fragment GuardFieldLength(const Field& field, intptr_t deopt_id);
+  Fragment GuardFieldClass(const Field& field, intptr_t deopt_id);
+  const Field& MayCloneField(const Field& field);
   Fragment StoreInstanceField(
       TokenPosition position,
       intptr_t offset,
       StoreBarrierType emit_store_barrier = kEmitStoreBarrier);
+  Fragment StoreInstanceField(
+      const Field& field,
+      bool is_initialization_store,
+      StoreBarrierType emit_store_barrier = kEmitStoreBarrier);
+  Fragment StoreInstanceFieldGuarded(const Field& field,
+                                     bool is_initialization_store);
+  Fragment LoadStaticField();
+  Fragment StoreStaticField(TokenPosition position, const Field& field);
+  Fragment StoreIndexed(intptr_t class_id);
 
   void Push(Definition* definition);
   Definition* Peek();
@@ -232,6 +247,11 @@
   JoinEntryInstr* BuildThrowNoSuchMethod();
 
   Fragment AssertBool(TokenPosition position);
+  Fragment BooleanNegate();
+  Fragment AllocateContext(intptr_t size);
+  Fragment CreateArray();
+  Fragment InstantiateType(const AbstractType& type);
+  Fragment InstantiateTypeArguments(const TypeArguments& type_arguments);
 
  protected:
   intptr_t AllocateBlockId() { return ++last_used_block_id_; }
diff --git a/runtime/vm/compiler/frontend/bytecode_reader.cc b/runtime/vm/compiler/frontend/bytecode_reader.cc
index 941e713..1f6e9e6 100644
--- a/runtime/vm/compiler/frontend/bytecode_reader.cc
+++ b/runtime/vm/compiler/frontend/bytecode_reader.cc
@@ -10,6 +10,7 @@
 #include "vm/compiler/assembler/disassembler_kbc.h"
 #include "vm/constants_kbc.h"
 #include "vm/dart_entry.h"
+#include "vm/timeline.h"
 
 #if !defined(DART_PRECOMPILED_RUNTIME)
 #if defined(DART_USE_INTERPRETER)
@@ -33,6 +34,11 @@
       active_class_(active_class) {}
 
 void BytecodeMetadataHelper::ReadMetadata(const Function& function) {
+#if !defined(PRODUCT)
+  TimelineDurationScope tds(Thread::Current(), Timeline::GetCompilerStream(),
+                            "BytecodeMetadataHelper::ReadMetadata");
+#endif  // !defined(PRODUCT)
+
   const intptr_t node_offset = function.kernel_offset();
   const intptr_t md_offset = GetNextMetadataPayloadOffset(node_offset);
   if (md_offset < 0) {
@@ -85,6 +91,11 @@
                                                  const Function& inner_function,
                                                  const ObjectPool& pool,
                                                  intptr_t from_index) {
+#if !defined(PRODUCT)
+  TimelineDurationScope tds(Thread::Current(), Timeline::GetCompilerStream(),
+                            "BytecodeMetadataHelper::ReadPoolEntries");
+#endif  // !defined(PRODUCT)
+
   // These enums and the code below reading the constant pool from kernel must
   // be kept in sync with pkg/vm/lib/bytecode/constant_pool.dart.
   enum ConstantPoolTag {
@@ -106,13 +117,13 @@
     kTypeArguments,
     kList,
     kInstance,
-    kSymbol,
     kTypeArgumentsForInstanceAllocation,
     kClosureFunction,
     kEndClosureFunctionScope,
     kNativeEntry,
     kSubtypeTestCache,
     kPartialTearOffInstantiation,
+    kEmptyTypeArguments,
   };
 
   enum InvocationKind {
@@ -189,10 +200,17 @@
         intptr_t arg_desc_index = helper_->ReadUInt();
         ASSERT(arg_desc_index < i);
         array ^= pool.ObjectAt(arg_desc_index);
-        // TODO(regis): Should num_args_tested be explicitly provided?
+        intptr_t checked_argument_count = 1;
+        if ((kind == InvocationKind::method) &&
+            (MethodTokenRecognizer::RecognizeTokenKind(name) !=
+             Token::kILLEGAL)) {
+          intptr_t argument_count = ArgumentsDescriptor(array).Count();
+          ASSERT(argument_count <= 2);
+          checked_argument_count = argument_count;
+        }
         obj = ICData::New(function, name,
                           array,  // Arguments descriptor.
-                          Thread::kNoDeoptId, 1 /* num_args_tested */,
+                          Thread::kNoDeoptId, checked_argument_count,
                           ICData::RebindRule::kInstance);
 #if defined(TAG_IC_DATA)
         ICData::Cast(obj).set_tag(ICData::Tag::kInstanceCall);
@@ -228,13 +246,15 @@
             elem = Function::Cast(elem).GetMethodExtractor(name);
           }
         }
+        const int num_args_checked =
+            MethodRecognizer::NumArgsCheckedForStaticCall(Function::Cast(elem));
         ASSERT(elem.IsFunction());
         intptr_t arg_desc_index = helper_->ReadUInt();
         ASSERT(arg_desc_index < i);
         array ^= pool.ObjectAt(arg_desc_index);
         obj = ICData::New(function, name,
                           array,  // Arguments descriptor.
-                          Thread::kNoDeoptId, 0 /* num_args_tested */,
+                          Thread::kNoDeoptId, num_args_checked,
                           ICData::RebindRule::kStatic);
         ICData::Cast(obj).AddTarget(Function::Cast(elem));
 #if defined(TAG_IC_DATA)
@@ -320,10 +340,6 @@
         }
         obj = H.Canonicalize(Instance::Cast(obj));
       } break;
-      case ConstantPoolTag::kSymbol:
-        obj = H.DartSymbolPlain(helper_->ReadStringReference()).raw();
-        ASSERT(String::Cast(obj).IsSymbol());
-        break;
       case ConstantPoolTag::kTypeArgumentsForInstanceAllocation: {
         cls = H.LookupClassByKernelClass(helper_->ReadCanonicalNameReference());
         obj =
@@ -477,6 +493,9 @@
             Context::Handle(helper_->zone_, old_closure.context()), Heap::kOld);
         obj = H.Canonicalize(Instance::Cast(obj));
       } break;
+      case ConstantPoolTag::kEmptyTypeArguments:
+        obj = Object::empty_type_arguments().raw();
+        break;
       default:
         UNREACHABLE();
     }
@@ -488,6 +507,11 @@
 }
 
 RawCode* BytecodeMetadataHelper::ReadBytecode(const ObjectPool& pool) {
+#if !defined(PRODUCT)
+  TimelineDurationScope tds(Thread::Current(), Timeline::GetCompilerStream(),
+                            "BytecodeMetadataHelper::ReadBytecode");
+#endif  // !defined(PRODUCT)
+
   intptr_t size = helper_->reader_.ReadUInt();
   intptr_t offset = helper_->reader_.offset();
   const uint8_t* data = helper_->reader_.BufferAt(offset);
@@ -499,6 +523,11 @@
 }
 
 void BytecodeMetadataHelper::ReadExceptionsTable(const Code& bytecode) {
+#if !defined(PRODUCT)
+  TimelineDurationScope tds(Thread::Current(), Timeline::GetCompilerStream(),
+                            "BytecodeMetadataHelper::ReadExceptionsTable");
+#endif  // !defined(PRODUCT)
+
   const intptr_t try_block_count = helper_->reader_.ReadListLength();
   if (try_block_count > 0) {
     const ObjectPool& pool =
@@ -515,9 +544,13 @@
     for (intptr_t try_index = 0; try_index < try_block_count; try_index++) {
       intptr_t outer_try_index_plus1 = helper_->reader_.ReadUInt();
       intptr_t outer_try_index = outer_try_index_plus1 - 1;
-      intptr_t start_pc = sizeof(KBCInstr) * helper_->reader_.ReadUInt();
-      intptr_t end_pc = sizeof(KBCInstr) * helper_->reader_.ReadUInt();
-      intptr_t handler_pc = sizeof(KBCInstr) * helper_->reader_.ReadUInt();
+      // PcDescriptors are expressed in terms of return addresses.
+      intptr_t start_pc = KernelBytecode::BytecodePcToOffset(
+          helper_->reader_.ReadUInt(), /* is_return_address = */ true);
+      intptr_t end_pc = KernelBytecode::BytecodePcToOffset(
+          helper_->reader_.ReadUInt(), /* is_return_address = */ true);
+      intptr_t handler_pc = KernelBytecode::BytecodePcToOffset(
+          helper_->reader_.ReadUInt(), /* is_return_address = */ false);
       uint8_t flags = helper_->reader_.ReadByte();
       const uint8_t kFlagNeedsStackTrace = 1 << 0;
       const uint8_t kFlagIsSynthetic = 1 << 1;
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 6db6e5f..35b4faf 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -4809,8 +4809,8 @@
   // of a jump due to:
   //   * `continue case_label`
   //   * `case e1: case e2: body`
-  Fragment* body_fragments = new Fragment[case_count];
-  intptr_t* case_expression_offsets = new intptr_t[case_count];
+  Fragment* body_fragments = Z->Alloc<Fragment>(case_count);
+  intptr_t* case_expression_offsets = Z->Alloc<intptr_t>(case_count);
   int default_case = -1;
 
   for (intptr_t i = 0; i < case_count; ++i) {
@@ -4992,9 +4992,6 @@
     // default case.
   }
 
-  delete[] body_fragments;
-  delete[] case_expression_offsets;
-
   SetOffset(end_offset);
   return Fragment(head_instructions.entry, current_instructions.current);
 }
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 2f406f71..bda808c 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -167,27 +167,6 @@
   return instructions;
 }
 
-Fragment FlowGraphBuilder::InstantiateType(const AbstractType& type) {
-  Value* function_type_args = Pop();
-  Value* instantiator_type_args = Pop();
-  InstantiateTypeInstr* instr = new (Z) InstantiateTypeInstr(
-      TokenPosition::kNoSource, type, instantiator_type_args,
-      function_type_args, GetNextDeoptId());
-  Push(instr);
-  return Fragment(instr);
-}
-
-Fragment FlowGraphBuilder::InstantiateTypeArguments(
-    const TypeArguments& type_arguments) {
-  Value* function_type_args = Pop();
-  Value* instantiator_type_args = Pop();
-  InstantiateTypeArgumentsInstr* instr = new (Z) InstantiateTypeArgumentsInstr(
-      TokenPosition::kNoSource, type_arguments, *active_class_.klass,
-      instantiator_type_args, function_type_args, GetNextDeoptId());
-  Push(instr);
-  return Fragment(instr);
-}
-
 Fragment FlowGraphBuilder::TranslateInstantiatedTypeArguments(
     const TypeArguments& type_arguments) {
   Fragment instructions;
@@ -231,13 +210,6 @@
   return instructions;
 }
 
-Fragment FlowGraphBuilder::AllocateContext(intptr_t size) {
-  AllocateContextInstr* allocate =
-      new (Z) AllocateContextInstr(TokenPosition::kNoSource, size);
-  Push(allocate);
-  return Fragment(allocate);
-}
-
 Fragment FlowGraphBuilder::AllocateObject(TokenPosition position,
                                           const Class& klass,
                                           intptr_t argument_count) {
@@ -258,12 +230,6 @@
   return Fragment(allocate);
 }
 
-Fragment FlowGraphBuilder::BooleanNegate() {
-  BooleanNegateInstr* negate = new (Z) BooleanNegateInstr(Pop());
-  Push(negate);
-  return Fragment(negate);
-}
-
 Fragment FlowGraphBuilder::CatchBlockEntry(const Array& handler_types,
                                            intptr_t handler_index,
                                            bool needs_stacktrace,
@@ -376,16 +342,6 @@
   return instructions;
 }
 
-Fragment FlowGraphBuilder::CreateArray() {
-  Value* element_count = Pop();
-  CreateArrayInstr* array =
-      new (Z) CreateArrayInstr(TokenPosition::kNoSource,
-                               Pop(),  // Element type.
-                               element_count, GetNextDeoptId());
-  Push(array);
-  return Fragment(array);
-}
-
 Fragment FlowGraphBuilder::InstanceCall(
     TokenPosition position,
     const String& name,
@@ -403,8 +359,7 @@
       checked_argument_count, ic_data_array_, GetNextDeoptId(),
       interface_target);
   if ((result_type != NULL) && !result_type->IsTrivial()) {
-    call->SetResultType(Z, CompileType::CreateNullable(result_type->nullable,
-                                                       result_type->cid));
+    call->SetResultType(Z, result_type->ToCompileType(Z));
   }
   Push(call);
   return Fragment(call);
@@ -446,22 +401,10 @@
   return Fragment(load);
 }
 
-const Field& MayCloneField(Zone* zone, const Field& field) {
-  if ((Compiler::IsBackgroundCompilation() ||
-       FLAG_force_clone_compiler_objects) &&
-      field.IsOriginal()) {
-    return Field::ZoneHandle(zone, field.CloneFromOriginal());
-  } else {
-    ASSERT(field.IsZoneHandle());
-    return field;
-  }
-}
-
 Fragment FlowGraphBuilder::LoadField(const Field& field) {
-  LoadFieldInstr* load =
-      new (Z) LoadFieldInstr(Pop(), &MayCloneField(Z, field),
-                             AbstractType::ZoneHandle(Z, field.type()),
-                             TokenPosition::kNoSource, parsed_function_);
+  LoadFieldInstr* load = new (Z) LoadFieldInstr(
+      Pop(), &MayCloneField(field), AbstractType::ZoneHandle(Z, field.type()),
+      TokenPosition::kNoSource, parsed_function_);
   Push(load);
   return Fragment(load);
 }
@@ -484,17 +427,10 @@
 
 Fragment FlowGraphBuilder::InitStaticField(const Field& field) {
   InitStaticFieldInstr* init = new (Z)
-      InitStaticFieldInstr(Pop(), MayCloneField(Z, field), GetNextDeoptId());
+      InitStaticFieldInstr(Pop(), MayCloneField(field), GetNextDeoptId());
   return Fragment(init);
 }
 
-Fragment FlowGraphBuilder::LoadStaticField() {
-  LoadStaticFieldInstr* load =
-      new (Z) LoadStaticFieldInstr(Pop(), TokenPosition::kNoSource);
-  Push(load);
-  return Fragment(load);
-}
-
 Fragment FlowGraphBuilder::NativeCall(const String* name,
                                       const Function* function) {
   InlineBailout("kernel::FlowGraphBuilder::NativeCall");
@@ -616,8 +552,7 @@
     }
   }
   if ((result_type != NULL) && !result_type->IsTrivial()) {
-    call->SetResultType(Z, CompileType::CreateNullable(result_type->nullable,
-                                                       result_type->cid));
+    call->SetResultType(Z, result_type->ToCompileType(Z));
   }
 }
 
@@ -638,23 +573,9 @@
   return Fragment(call);
 }
 
-Fragment FlowGraphBuilder::StoreIndexed(intptr_t class_id) {
-  Value* value = Pop();
-  Value* index = Pop();
-  const StoreBarrierType emit_store_barrier =
-      value->BindsToConstant() ? kNoStoreBarrier : kEmitStoreBarrier;
-  StoreIndexedInstr* store = new (Z) StoreIndexedInstr(
-      Pop(),  // Array.
-      index, value, emit_store_barrier, Instance::ElementSizeFor(class_id),
-      class_id, kAlignedAccess, Thread::kNoDeoptId, TokenPosition::kNoSource);
-  Push(store);
-  return Fragment(store);
-}
-
-Fragment FlowGraphBuilder::StoreInstanceField(
+Fragment FlowGraphBuilder::StoreInstanceFieldGuarded(
     const Field& field,
-    bool is_initialization_store,
-    StoreBarrierType emit_store_barrier) {
+    bool is_initialization_store) {
   Fragment instructions;
 
   const AbstractType& dst_type = AbstractType::ZoneHandle(Z, field.type());
@@ -663,50 +584,12 @@
         CheckAssignable(dst_type, String::ZoneHandle(Z, field.name()));
   }
 
-  Value* value = Pop();
-  if (value->BindsToConstant()) {
-    emit_store_barrier = kNoStoreBarrier;
-  }
-
-  StoreInstanceFieldInstr* store = new (Z)
-      StoreInstanceFieldInstr(MayCloneField(Z, field), Pop(), value,
-                              emit_store_barrier, TokenPosition::kNoSource);
-  store->set_is_initialization(is_initialization_store);
-  instructions <<= store;
+  instructions += BaseFlowGraphBuilder::StoreInstanceFieldGuarded(
+      field, is_initialization_store);
 
   return instructions;
 }
 
-Fragment FlowGraphBuilder::StoreInstanceFieldGuarded(
-    const Field& field,
-    bool is_initialization_store) {
-  Fragment instructions;
-  const Field& field_clone = MayCloneField(Z, field);
-  if (I->use_field_guards()) {
-    LocalVariable* store_expression = MakeTemporary();
-    instructions += LoadLocal(store_expression);
-    instructions += GuardFieldClass(field_clone, GetNextDeoptId());
-    instructions += LoadLocal(store_expression);
-    instructions += GuardFieldLength(field_clone, GetNextDeoptId());
-  }
-  instructions += StoreInstanceField(field_clone, is_initialization_store);
-  return instructions;
-}
-
-Fragment FlowGraphBuilder::StoreInstanceField(
-    TokenPosition position,
-    intptr_t offset,
-    StoreBarrierType emit_store_barrier) {
-  return BaseFlowGraphBuilder::StoreInstanceField(position, offset,
-                                                  emit_store_barrier);
-}
-
-Fragment FlowGraphBuilder::StoreStaticField(TokenPosition position,
-                                            const Field& field) {
-  return Fragment(
-      new (Z) StoreStaticFieldInstr(MayCloneField(Z, field), Pop(), position));
-}
-
 Fragment FlowGraphBuilder::StringInterpolate(TokenPosition position) {
   Value* array = Pop();
   StringInterpolateInstr* interpolate =
@@ -1091,16 +974,6 @@
   return fragment;
 }
 
-Fragment FlowGraphBuilder::GuardFieldLength(const Field& field,
-                                            intptr_t deopt_id) {
-  return Fragment(new (Z) GuardFieldLengthInstr(Pop(), field, deopt_id));
-}
-
-Fragment FlowGraphBuilder::GuardFieldClass(const Field& field,
-                                           intptr_t deopt_id) {
-  return Fragment(new (Z) GuardFieldClassInstr(Pop(), field, deopt_id));
-}
-
 Fragment FlowGraphBuilder::CheckVariableTypeInCheckedMode(
     const AbstractType& dst_type,
     const String& name_symbol) {
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.h b/runtime/vm/compiler/frontend/kernel_to_il.h
index 9477325..f4f84de 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.h
+++ b/runtime/vm/compiler/frontend/kernel_to_il.h
@@ -77,17 +77,13 @@
 
   Fragment LoadInstantiatorTypeArguments();
   Fragment LoadFunctionTypeArguments();
-  Fragment InstantiateType(const AbstractType& type);
-  Fragment InstantiateTypeArguments(const TypeArguments& type_arguments);
   Fragment TranslateInstantiatedTypeArguments(
       const TypeArguments& type_arguments);
 
-  Fragment AllocateContext(intptr_t size);
   Fragment AllocateObject(TokenPosition position,
                           const Class& klass,
                           intptr_t argument_count);
   Fragment AllocateObject(const Class& klass, const Function& closure_function);
-  Fragment BooleanNegate();
   Fragment CatchBlockEntry(const Array& handler_types,
                            intptr_t handler_index,
                            bool needs_stacktrace,
@@ -95,7 +91,6 @@
   Fragment TryCatch(int try_handler_index);
   Fragment CheckStackOverflowInPrologue(TokenPosition position);
   Fragment CloneContext(intptr_t num_context_variables);
-  Fragment CreateArray();
   Fragment InstanceCall(TokenPosition position,
                         const String& name,
                         Token::Kind kind,
@@ -114,7 +109,6 @@
   Fragment LoadField(const Field& field);
   Fragment LoadLocal(LocalVariable* variable);
   Fragment InitStaticField(const Field& field);
-  Fragment LoadStaticField();
   Fragment NativeCall(const String* name, const Function* function);
   Fragment Return(TokenPosition position);
   Fragment CheckNull(TokenPosition position,
@@ -135,25 +129,13 @@
                       ICData::RebindRule rebind_rule,
                       const InferredTypeMetadata* result_type = NULL,
                       intptr_t type_args_len = 0);
-  Fragment StoreIndexed(intptr_t class_id);
   Fragment StoreInstanceFieldGuarded(const Field& field,
                                      bool is_initialization_store);
-  Fragment StoreInstanceField(
-      TokenPosition position,
-      intptr_t offset,
-      StoreBarrierType emit_store_barrier = kEmitStoreBarrier);
-  Fragment StoreInstanceField(
-      const Field& field,
-      bool is_initialization_store,
-      StoreBarrierType emit_store_barrier = kEmitStoreBarrier);
-  Fragment StoreStaticField(TokenPosition position, const Field& field);
   Fragment StringInterpolate(TokenPosition position);
   Fragment StringInterpolateSingle(TokenPosition position);
   Fragment ThrowTypeError();
   Fragment ThrowNoSuchMethodError();
   Fragment BuildImplicitClosureCreation(const Function& target);
-  Fragment GuardFieldLength(const Field& field, intptr_t deopt_id);
-  Fragment GuardFieldClass(const Field& field, intptr_t deopt_id);
 
   Fragment EvaluateAssertion();
   Fragment CheckVariableTypeInCheckedMode(const AbstractType& dst_type,
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index 586eedb..02047bd 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -1607,17 +1607,18 @@
     intptr_t node_offset) {
   const intptr_t md_offset = GetNextMetadataPayloadOffset(node_offset);
   if (md_offset < 0) {
-    return InferredTypeMetadata(kDynamicCid, true);
+    return InferredTypeMetadata(kDynamicCid,
+                                InferredTypeMetadata::kFlagNullable);
   }
 
   AlternativeReadingScope alt(&helper_->reader_, &H.metadata_payloads(),
                               md_offset);
 
   const NameIndex kernel_name = helper_->ReadCanonicalNameReference();
-  const bool nullable = helper_->ReadBool();
+  const uint8_t flags = helper_->ReadByte();
 
   if (H.IsRoot(kernel_name)) {
-    return InferredTypeMetadata(kDynamicCid, nullable);
+    return InferredTypeMetadata(kDynamicCid, flags);
   }
 
   const Class& klass =
@@ -1631,7 +1632,7 @@
     cid = kDynamicCid;
   }
 
-  return InferredTypeMetadata(cid, nullable);
+  return InferredTypeMetadata(cid, flags);
 }
 
 ProcedureAttributesMetadataHelper::ProcedureAttributesMetadataHelper(
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h
index 9a7fbf5..ea2f79b 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.h
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h
@@ -5,6 +5,7 @@
 #ifndef RUNTIME_VM_COMPILER_FRONTEND_KERNEL_TRANSLATION_HELPER_H_
 #define RUNTIME_VM_COMPILER_FRONTEND_KERNEL_TRANSLATION_HELPER_H_
 
+#include "vm/compiler/backend/il.h"  // For CompileType.
 #include "vm/kernel.h"
 #include "vm/kernel_binary.h"
 #include "vm/object.h"
@@ -831,13 +832,31 @@
 };
 
 struct InferredTypeMetadata {
-  InferredTypeMetadata(intptr_t cid_, bool nullable_)
-      : cid(cid_), nullable(nullable_) {}
+  enum Flag {
+    kFlagNullable = 1 << 0,
+    kFlagInt = 1 << 1,
+  };
+
+  InferredTypeMetadata(intptr_t cid_, uint8_t flags_)
+      : cid(cid_), flags(flags_) {}
 
   const intptr_t cid;
-  const bool nullable;
+  const uint8_t flags;
 
-  bool IsTrivial() const { return (cid == kDynamicCid) && nullable; }
+  bool IsTrivial() const {
+    return (cid == kDynamicCid) && (flags == kFlagNullable);
+  }
+  bool IsNullable() const { return (flags & kFlagNullable) != 0; }
+  bool IsInt() const { return (flags & kFlagInt) != 0; }
+
+  CompileType ToCompileType(Zone* zone) const {
+    if (IsInt()) {
+      return CompileType::FromAbstractType(
+          Type::ZoneHandle(zone, Type::IntType()), IsNullable());
+    } else {
+      return CompileType::CreateNullable(IsNullable(), cid);
+    }
+  }
 };
 
 // Helper class which provides access to inferred type metadata.
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index 9c50544..d78f149 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -1482,8 +1482,7 @@
     const InferredTypeMetadata* param_type_md /* = NULL */) {
   CompileType* param_type = NULL;
   if ((param_type_md != NULL) && !param_type_md->IsTrivial()) {
-    param_type = new (Z) CompileType(CompileType::CreateNullable(
-        param_type_md->nullable, param_type_md->cid));
+    param_type = new (Z) CompileType(param_type_md->ToCompileType(Z));
   }
   return new (Z)
       LocalVariable(declaration_pos, token_pos, name, type, param_type);
diff --git a/runtime/vm/compiler/method_recognizer.cc b/runtime/vm/compiler/method_recognizer.cc
index ecc20f6..70def2a 100644
--- a/runtime/vm/compiler/method_recognizer.cc
+++ b/runtime/vm/compiler/method_recognizer.cc
@@ -22,6 +22,18 @@
   return function.is_polymorphic_target();
 }
 
+intptr_t MethodRecognizer::NumArgsCheckedForStaticCall(
+    const Function& function) {
+  switch (RecognizeKind(function)) {
+    case MethodRecognizer::kDoubleFromInteger:
+    case MethodRecognizer::kMathMin:
+    case MethodRecognizer::kMathMax:
+      return 2;
+    default:
+      return 0;
+  }
+}
+
 intptr_t MethodRecognizer::ResultCid(const Function& function) {
   switch (function.recognized_kind()) {
 #define DEFINE_CASE(cname, fname, ename, result_type, fingerprint)             \
diff --git a/runtime/vm/compiler/method_recognizer.h b/runtime/vm/compiler/method_recognizer.h
index e877f49..592c7c2 100644
--- a/runtime/vm/compiler/method_recognizer.h
+++ b/runtime/vm/compiler/method_recognizer.h
@@ -560,6 +560,7 @@
   static Kind RecognizeKind(const Function& function);
   static bool AlwaysInline(const Function& function);
   static bool PolymorphicTarget(const Function& function);
+  static intptr_t NumArgsCheckedForStaticCall(const Function& function);
   static intptr_t ResultCid(const Function& function);
   static intptr_t MethodKindToReceiverCid(Kind kind);
   static const char* KindToCString(Kind kind);
diff --git a/runtime/vm/constants_kbc.h b/runtime/vm/constants_kbc.h
index e6bdae6..9beae96 100644
--- a/runtime/vm/constants_kbc.h
+++ b/runtime/vm/constants_kbc.h
@@ -164,7 +164,13 @@
 //    SP[-(1+ArgC)], ..., SP[-1] and argument descriptor PP[D], which
 //    indicates whether the first argument is a type argument vector.
 //
-//  - InstanceCall<N> ArgC, D; InstanceCall<N>Opt ArgC, D
+//  - InstanceCall ArgC, D
+//
+//    Lookup and invoke method using ICData in PP[D]
+//    with arguments SP[-(1+ArgC)], ..., SP[-1].
+//    The ICData indicates whether the first argument is a type argument vector.
+//
+//  - InstanceCall<N>Opt ArgC, D
 //
 //    Lookup and invoke method with N checked arguments using ICData in PP[D]
 //    with arguments SP[-(1+ArgC)], ..., SP[-1].
@@ -815,8 +821,7 @@
   V(PopLocal,                              X, xeg, ___, ___)                   \
   V(IndirectStaticCall,                  A_D, num, num, ___)                   \
   V(StaticCall,                          A_D, num, num, ___)                   \
-  V(InstanceCall1,                       A_D, num, num, ___)                   \
-  V(InstanceCall2,                       A_D, num, num, ___)                   \
+  V(InstanceCall,                        A_D, num, num, ___)                   \
   V(InstanceCall1Opt,                    A_D, num, num, ___)                   \
   V(InstanceCall2Opt,                    A_D, num, num, ___)                   \
   V(PushPolymorphicInstanceCall,         A_D, num, num, ___)                   \
@@ -1079,8 +1084,7 @@
     switch (DecodeOpcode(instr)) {
       case KernelBytecode::kStaticCall:
       case KernelBytecode::kIndirectStaticCall:
-      case KernelBytecode::kInstanceCall1:
-      case KernelBytecode::kInstanceCall2:
+      case KernelBytecode::kInstanceCall:
       case KernelBytecode::kInstanceCall1Opt:
       case KernelBytecode::kInstanceCall2Opt:
       case KernelBytecode::kDebugBreak:
@@ -1122,6 +1126,17 @@
 
   static KBCInstr At(uword pc) { return *reinterpret_cast<KBCInstr*>(pc); }
 
+  // Converts bytecode PC into an offset.
+  // For return addresses used in PcDescriptors, PC is also advanced to the
+  // next instruction.
+  static intptr_t BytecodePcToOffset(uint32_t pc, bool is_return_address) {
+    return sizeof(KBCInstr) * (pc + (is_return_address ? 1 : 0));
+  }
+
+  static uint32_t OffsetToBytecodePc(intptr_t offset, bool is_return_address) {
+    return (offset / sizeof(KBCInstr)) - (is_return_address ? 1 : 0);
+  }
+
  private:
   DISALLOW_ALLOCATION();
   DISALLOW_IMPLICIT_CONSTRUCTORS(KernelBytecode);
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 3504ce4..eabfc03 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -2314,20 +2314,6 @@
   return Api::Success();
 }
 
-DART_EXPORT Dart_Handle Dart_GetClosure(Dart_Handle library,
-                                        Dart_Handle function_name) {
-  DARTSCOPE(Thread::Current());
-  const Library& lib = Api::UnwrapLibraryHandle(Z, library);
-  if (lib.IsNull()) {
-    RETURN_TYPE_ERROR(Z, library, Library);
-  }
-  const String& name = Api::UnwrapStringHandle(Z, function_name);
-  if (name.IsNull()) {
-    RETURN_TYPE_ERROR(Z, function_name, String);
-  }
-  return Api::NewHandle(T, lib.GetFunctionClosure(name));
-}
-
 DART_EXPORT Dart_Handle Dart_GetStaticMethodClosure(Dart_Handle library,
                                                     Dart_Handle cls_type,
                                                     Dart_Handle function_name) {
@@ -4148,7 +4134,8 @@
   API_TIMELINE_DURATION(T);
   CHECK_CALLBACK_STATE(T);
 
-  const String& function_name = Api::UnwrapStringHandle(Z, name);
+  String& function_name =
+      String::Handle(Z, Api::UnwrapStringHandle(Z, name).raw());
   if (function_name.IsNull()) {
     RETURN_TYPE_ERROR(Z, name, String);
   }
@@ -4163,7 +4150,9 @@
   }
   Dart_Handle result;
   Array& args = Array::Handle(Z);
-  const intptr_t kTypeArgsLen = 0;
+  // This API does not provide a way to pass named parameters.
+  const Array& arg_names = Object::empty_array();
+  const bool respect_reflectable = false;
   if (obj.IsType()) {
     if (!Type::Cast(obj).IsFinalized()) {
       return Api::NewError(
@@ -4172,70 +4161,33 @@
     }
 
     const Class& cls = Class::Handle(Z, Type::Cast(obj).type_class());
-    const Function& function =
-        Function::Handle(Z, Resolver::ResolveStaticAllowPrivate(
-                                cls, function_name, kTypeArgsLen,
-                                number_of_arguments, Object::empty_array()));
-    if (function.IsNull()) {
-      const String& cls_name = String::Handle(Z, cls.Name());
-      return Api::NewError("%s: did not find static method '%s.%s'.",
-                           CURRENT_FUNC, cls_name.ToCString(),
-                           function_name.ToCString());
+    if (Library::IsPrivate(function_name)) {
+      const Library& lib = Library::Handle(Z, cls.library());
+      function_name = lib.PrivateName(function_name);
     }
-#if !defined(PRODUCT)
-    if (tds.enabled()) {
-      const String& cls_name = String::Handle(Z, cls.Name());
-      tds.SetNumArguments(1);
-      tds.FormatArgument(0, "name", "%s.%s", cls_name.ToCString(),
-                         function_name.ToCString());
-    }
-#endif  // !defined(PRODUCT)
+
     // Setup args and check for malformed arguments in the arguments list.
     result = SetupArguments(T, number_of_arguments, arguments, 0, &args);
-    if (!::Dart_IsError(result)) {
-      result = Api::NewHandle(T, DartEntry::InvokeFunction(function, args));
+    if (::Dart_IsError(result)) {
+      return result;
     }
-    return result;
+    return Api::NewHandle(
+        T, cls.Invoke(function_name, args, arg_names, respect_reflectable));
   } else if (obj.IsNull() || obj.IsInstance()) {
     // Since we have allocated an object it would mean that the type of the
     // receiver is already resolved and finalized, hence it is not necessary
     // to check here.
     Instance& instance = Instance::Handle(Z);
     instance ^= obj.raw();
-    ArgumentsDescriptor args_desc(Array::Handle(
-        Z, ArgumentsDescriptor::New(kTypeArgsLen, number_of_arguments + 1)));
-    const Function& function = Function::Handle(
-        Z, Resolver::ResolveDynamic(instance, function_name, args_desc));
-    if (function.IsNull()) {
-      // Setup args and check for malformed arguments in the arguments list.
-      result = SetupArguments(T, number_of_arguments, arguments, 1, &args);
-      if (!::Dart_IsError(result)) {
-        args.SetAt(0, instance);
-        const Array& args_descriptor = Array::Handle(
-            Z, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
-        result = Api::NewHandle(
-            T, DartEntry::InvokeNoSuchMethod(instance, function_name, args,
-                                             args_descriptor));
-      }
-      return result;
-    }
-#if !defined(PRODUCT)
-    if (tds.enabled()) {
-      const Class& cls = Class::Handle(Z, instance.clazz());
-      ASSERT(!cls.IsNull());
-      const String& cls_name = String::Handle(Z, cls.Name());
-      tds.SetNumArguments(1);
-      tds.FormatArgument(0, "name", "%s.%s", cls_name.ToCString(),
-                         function_name.ToCString());
-    }
-#endif  // !defined(PRODUCT)
+
     // Setup args and check for malformed arguments in the arguments list.
     result = SetupArguments(T, number_of_arguments, arguments, 1, &args);
-    if (!::Dart_IsError(result)) {
-      args.SetAt(0, instance);
-      result = Api::NewHandle(T, DartEntry::InvokeFunction(function, args));
+    if (::Dart_IsError(result)) {
+      return result;
     }
-    return result;
+    args.SetAt(0, instance);
+    return Api::NewHandle(T, instance.Invoke(function_name, args, arg_names,
+                                             respect_reflectable));
   } else if (obj.IsLibrary()) {
     // Check whether class finalization is needed.
     const Library& lib = Library::Cast(obj);
@@ -4246,37 +4198,18 @@
                            CURRENT_FUNC);
     }
 
-    const Function& function =
-        Function::Handle(Z, lib.LookupFunctionAllowPrivate(function_name));
-    if (function.IsNull()) {
-      return Api::NewError("%s: did not find top-level function '%s'.",
-                           CURRENT_FUNC, function_name.ToCString());
+    if (Library::IsPrivate(function_name)) {
+      function_name = lib.PrivateName(function_name);
     }
 
-#if !defined(PRODUCT)
-    if (tds.enabled()) {
-      const String& lib_name = String::Handle(Z, lib.url());
-      tds.SetNumArguments(1);
-      tds.FormatArgument(0, "name", "%s.%s", lib_name.ToCString(),
-                         function_name.ToCString());
-    }
-#endif  // !defined(PRODUCT)
-
-    // LookupFunctionAllowPrivate does not check argument arity, so we
-    // do it here.
-    String& error_message = String::Handle(Z);
-    if (!function.AreValidArgumentCounts(kTypeArgsLen, number_of_arguments, 0,
-                                         &error_message)) {
-      return Api::NewError("%s: wrong argument count for function '%s': %s.",
-                           CURRENT_FUNC, function_name.ToCString(),
-                           error_message.ToCString());
-    }
     // Setup args and check for malformed arguments in the arguments list.
     result = SetupArguments(T, number_of_arguments, arguments, 0, &args);
-    if (!::Dart_IsError(result)) {
-      result = Api::NewHandle(T, DartEntry::InvokeFunction(function, args));
+    if (::Dart_IsError(result)) {
+      return result;
     }
-    return result;
+
+    return Api::NewHandle(
+        T, lib.Invoke(function_name, args, arg_names, respect_reflectable));
   } else {
     return Api::NewError(
         "%s expects argument 'target' to be an object, type, or library.",
@@ -4320,96 +4253,39 @@
   API_TIMELINE_DURATION(T);
   CHECK_CALLBACK_STATE(T);
 
-  const String& field_name = Api::UnwrapStringHandle(Z, name);
+  String& field_name =
+      String::Handle(Z, Api::UnwrapStringHandle(Z, name).raw());
   if (field_name.IsNull()) {
     RETURN_TYPE_ERROR(Z, name, String);
   }
-
-  Field& field = Field::Handle(Z);
-  Function& getter = Function::Handle(Z);
   const Object& obj = Object::Handle(Z, Api::UnwrapHandle(container));
-  if (obj.IsNull()) {
-    return Api::NewError("%s expects argument 'container' to be non-null.",
-                         CURRENT_FUNC);
-  } else if (obj.IsType()) {
+  const bool throw_nsm_if_absent = true;
+  const bool respect_reflectable = false;
+
+  if (obj.IsType()) {
     if (!Type::Cast(obj).IsFinalized()) {
       return Api::NewError(
           "%s expects argument 'container' to be a fully resolved type.",
           CURRENT_FUNC);
     }
-    // To access a static field we may need to use the Field or the
-    // getter Function.
     Class& cls = Class::Handle(Z, Type::Cast(obj).type_class());
-
-    field = cls.LookupStaticFieldAllowPrivate(field_name);
-    if (field.IsNull() || field.IsUninitialized()) {
-      const String& getter_name =
-          String::Handle(Z, Field::GetterName(field_name));
-      getter = cls.LookupStaticFunctionAllowPrivate(getter_name);
+    if (Library::IsPrivate(field_name)) {
+      const Library& lib = Library::Handle(Z, cls.library());
+      field_name = lib.PrivateName(field_name);
     }
-
-#if !defined(PRODUCT)
-    if (tds.enabled()) {
-      const String& cls_name = String::Handle(cls.Name());
-      tds.SetNumArguments(1);
-      tds.FormatArgument(0, "name", "%s.%s", cls_name.ToCString(),
-                         field_name.ToCString());
+    return Api::NewHandle(T, cls.InvokeGetter(field_name, throw_nsm_if_absent,
+                                              respect_reflectable));
+  } else if (obj.IsNull() || obj.IsInstance()) {
+    Instance& instance = Instance::Handle(Z);
+    instance ^= obj.raw();
+    if (Library::IsPrivate(field_name)) {
+      const Class& cls = Class::Handle(Z, instance.clazz());
+      const Library& lib = Library::Handle(Z, cls.library());
+      field_name = lib.PrivateName(field_name);
     }
-#endif  // !defined(PRODUCT)
-
-    if (!getter.IsNull()) {
-      // Invoke the getter and return the result.
-      return Api::NewHandle(
-          T, DartEntry::InvokeFunction(getter, Object::empty_array()));
-    } else if (!field.IsNull()) {
-      return Api::NewHandle(T, field.StaticValue());
-    } else {
-      return Api::NewError("%s: did not find static field '%s'.", CURRENT_FUNC,
-                           field_name.ToCString());
-    }
-
-  } else if (obj.IsInstance()) {
-    // Every instance field has a getter Function.  Try to find the
-    // getter in any superclass and use that function to access the
-    // field.
-    const Instance& instance = Instance::Cast(obj);
-    Class& cls = Class::Handle(Z, instance.clazz());
-    String& getter_name = String::Handle(Z, Field::GetterName(field_name));
-    while (!cls.IsNull()) {
-      getter = cls.LookupDynamicFunctionAllowPrivate(getter_name);
-      if (!getter.IsNull()) {
-        break;
-      }
-      cls = cls.SuperClass();
-    }
-
-#if !defined(PRODUCT)
-    if (tds.enabled()) {
-      const String& cls_name = String::Handle(cls.Name());
-      tds.SetNumArguments(1);
-      tds.FormatArgument(0, "name", "%s.%s", cls_name.ToCString(),
-                         field_name.ToCString());
-    }
-#endif  // !defined(PRODUCT)
-
-    // Invoke the getter and return the result.
-    const int kTypeArgsLen = 0;
-    const int kNumArgs = 1;
-    const Array& args = Array::Handle(Z, Array::New(kNumArgs));
-    args.SetAt(0, instance);
-    if (getter.IsNull()) {
-      const Array& args_descriptor = Array::Handle(
-          Z, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
-      return Api::NewHandle(
-          T, DartEntry::InvokeNoSuchMethod(instance, getter_name, args,
-                                           args_descriptor));
-    }
-    return Api::NewHandle(T, DartEntry::InvokeFunction(getter, args));
-
+    return Api::NewHandle(
+        T, instance.InvokeGetter(field_name, respect_reflectable));
   } else if (obj.IsLibrary()) {
-    // To access a top-level we may need to use the Field or the
-    // getter Function.  The getter function may either be in the
-    // library or in the field's owner class, depending.
     const Library& lib = Library::Cast(obj);
     // Check that the library is loaded.
     if (!lib.Loaded()) {
@@ -4417,40 +4293,11 @@
           "%s expects library argument 'container' to be loaded.",
           CURRENT_FUNC);
     }
-    field = lib.LookupFieldAllowPrivate(field_name);
-    if (field.IsNull()) {
-      // No field found and no ambiguity error.  Check for a getter in the lib.
-      const String& getter_name =
-          String::Handle(Z, Field::GetterName(field_name));
-      getter = lib.LookupFunctionAllowPrivate(getter_name);
-    } else if (!field.IsNull() && field.IsUninitialized()) {
-      // A field was found.  Check for a getter in the field's owner class.
-      const Class& cls = Class::Handle(Z, field.Owner());
-      const String& getter_name =
-          String::Handle(Z, Field::GetterName(field_name));
-      getter = cls.LookupStaticFunctionAllowPrivate(getter_name);
+    if (Library::IsPrivate(field_name)) {
+      field_name = lib.PrivateName(field_name);
     }
-
-#if !defined(PRODUCT)
-    if (tds.enabled()) {
-      const String& lib_name = String::Handle(lib.url());
-      tds.SetNumArguments(1);
-      tds.FormatArgument(0, "name", "%s.%s", lib_name.ToCString(),
-                         field_name.ToCString());
-    }
-#endif  // !defined(PRODUCT)
-
-    if (!getter.IsNull()) {
-      // Invoke the getter and return the result.
-      return Api::NewHandle(
-          T, DartEntry::InvokeFunction(getter, Object::empty_array()));
-    }
-    if (!field.IsNull()) {
-      return Api::NewHandle(T, field.StaticValue());
-    }
-    return Api::NewError("%s: did not find top-level variable '%s'.",
-                         CURRENT_FUNC, field_name.ToCString());
-
+    return Api::NewHandle(T, lib.InvokeGetter(field_name, throw_nsm_if_absent,
+                                              respect_reflectable));
   } else if (obj.IsError()) {
     return container;
   } else {
@@ -4467,7 +4314,8 @@
   API_TIMELINE_DURATION(T);
   CHECK_CALLBACK_STATE(T);
 
-  const String& field_name = Api::UnwrapStringHandle(Z, name);
+  String& field_name =
+      String::Handle(Z, Api::UnwrapStringHandle(Z, name).raw());
   if (field_name.IsNull()) {
     RETURN_TYPE_ERROR(Z, name, String);
   }
@@ -4480,13 +4328,10 @@
   Instance& value_instance = Instance::Handle(Z);
   value_instance ^= value_obj.raw();
 
-  Field& field = Field::Handle(Z);
-  Function& setter = Function::Handle(Z);
   const Object& obj = Object::Handle(Z, Api::UnwrapHandle(container));
-  if (obj.IsNull()) {
-    return Api::NewError("%s expects argument 'container' to be non-null.",
-                         CURRENT_FUNC);
-  } else if (obj.IsType()) {
+  const bool respect_reflectable = false;
+
+  if (obj.IsType()) {
     if (!Type::Cast(obj).IsFinalized()) {
       return Api::NewError(
           "%s expects argument 'container' to be a fully resolved type.",
@@ -4496,73 +4341,22 @@
     // To access a static field we may need to use the Field or the
     // setter Function.
     Class& cls = Class::Handle(Z, Type::Cast(obj).type_class());
-
-    field = cls.LookupStaticFieldAllowPrivate(field_name);
-    if (field.IsNull()) {
-      String& setter_name = String::Handle(Z, Field::SetterName(field_name));
-      setter = cls.LookupStaticFunctionAllowPrivate(setter_name);
+    if (Library::IsPrivate(field_name)) {
+      const Library& lib = Library::Handle(Z, cls.library());
+      field_name = lib.PrivateName(field_name);
     }
-
-    if (!setter.IsNull()) {
-      // Invoke the setter and return the result.
-      const int kNumArgs = 1;
-      const Array& args = Array::Handle(Z, Array::New(kNumArgs));
-      args.SetAt(0, value_instance);
-      const Object& result =
-          Object::Handle(Z, DartEntry::InvokeFunction(setter, args));
-      if (result.IsError()) {
-        return Api::NewHandle(T, result.raw());
-      } else {
-        return Api::Success();
-      }
-    } else if (!field.IsNull()) {
-      if (field.is_final()) {
-        return Api::NewError("%s: cannot set final field '%s'.", CURRENT_FUNC,
-                             field_name.ToCString());
-      } else {
-        field.SetStaticValue(value_instance);
-        return Api::Success();
-      }
-    } else {
-      return Api::NewError("%s: did not find static field '%s'.", CURRENT_FUNC,
-                           field_name.ToCString());
+    return Api::NewHandle(
+        T, cls.InvokeSetter(field_name, value_instance, respect_reflectable));
+  } else if (obj.IsNull() || obj.IsInstance()) {
+    Instance& instance = Instance::Handle(Z);
+    instance ^= obj.raw();
+    if (Library::IsPrivate(field_name)) {
+      const Class& cls = Class::Handle(Z, instance.clazz());
+      const Library& lib = Library::Handle(Z, cls.library());
+      field_name = lib.PrivateName(field_name);
     }
-
-  } else if (obj.IsInstance()) {
-    // Every instance field has a setter Function.  Try to find the
-    // setter in any superclass and use that function to access the
-    // field.
-    const Instance& instance = Instance::Cast(obj);
-    Class& cls = Class::Handle(Z, instance.clazz());
-    String& setter_name = String::Handle(Z, Field::SetterName(field_name));
-    while (!cls.IsNull()) {
-      field = cls.LookupInstanceFieldAllowPrivate(field_name);
-      if (!field.IsNull() && field.is_final()) {
-        return Api::NewError("%s: cannot set final field '%s'.", CURRENT_FUNC,
-                             field_name.ToCString());
-      }
-      setter = cls.LookupDynamicFunctionAllowPrivate(setter_name);
-      if (!setter.IsNull()) {
-        break;
-      }
-      cls = cls.SuperClass();
-    }
-
-    // Invoke the setter and return the result.
-    const int kTypeArgsLen = 0;
-    const int kNumArgs = 2;
-    const Array& args = Array::Handle(Z, Array::New(kNumArgs));
-    args.SetAt(0, instance);
-    args.SetAt(1, value_instance);
-    if (setter.IsNull()) {
-      const Array& args_descriptor = Array::Handle(
-          Z, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
-      return Api::NewHandle(
-          T, DartEntry::InvokeNoSuchMethod(instance, setter_name, args,
-                                           args_descriptor));
-    }
-    return Api::NewHandle(T, DartEntry::InvokeFunction(setter, args));
-
+    return Api::NewHandle(T, instance.InvokeSetter(field_name, value_instance,
+                                                   respect_reflectable));
   } else if (obj.IsLibrary()) {
     // To access a top-level we may need to use the Field or the
     // setter Function.  The setter function may either be in the
@@ -4574,36 +4368,12 @@
           "%s expects library argument 'container' to be loaded.",
           CURRENT_FUNC);
     }
-    field = lib.LookupFieldAllowPrivate(field_name);
-    if (field.IsNull()) {
-      const String& setter_name =
-          String::Handle(Z, Field::SetterName(field_name));
-      setter ^= lib.LookupFunctionAllowPrivate(setter_name);
-    }
 
-    if (!setter.IsNull()) {
-      // Invoke the setter and return the result.
-      const int kNumArgs = 1;
-      const Array& args = Array::Handle(Z, Array::New(kNumArgs));
-      args.SetAt(0, value_instance);
-      const Object& result =
-          Object::Handle(Z, DartEntry::InvokeFunction(setter, args));
-      if (result.IsError()) {
-        return Api::NewHandle(T, result.raw());
-      }
-      return Api::Success();
+    if (Library::IsPrivate(field_name)) {
+      field_name = lib.PrivateName(field_name);
     }
-    if (!field.IsNull()) {
-      if (field.is_final()) {
-        return Api::NewError("%s: cannot set final top-level variable '%s'.",
-                             CURRENT_FUNC, field_name.ToCString());
-      }
-      field.SetStaticValue(value_instance);
-      return Api::Success();
-    }
-    return Api::NewError("%s: did not find top-level variable '%s'.",
-                         CURRENT_FUNC, field_name.ToCString());
-
+    return Api::NewHandle(
+        T, lib.InvokeSetter(field_name, value_instance, respect_reflectable));
   } else if (obj.IsError()) {
     return container;
   }
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index e81dd2f..6bf1cd1 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -794,7 +794,7 @@
   Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
   EXPECT_VALID(lib);
 
-  Dart_Handle closure = Dart_GetClosure(lib, NewString("getInt"));
+  Dart_Handle closure = Dart_GetField(lib, NewString("getInt"));
   EXPECT_VALID(closure);
   if (Dart_IsClosure(closure)) {
     closure = Dart_ClosureFunction(closure);
@@ -814,7 +814,7 @@
   Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
   EXPECT_VALID(lib);
 
-  Dart_Handle closure = Dart_GetClosure(lib, NewString("getInt"));
+  Dart_Handle closure = Dart_GetField(lib, NewString("getInt"));
   EXPECT_VALID(closure);
   if (Dart_IsClosure(closure)) {
     closure = Dart_ClosureFunction(closure);
@@ -844,7 +844,7 @@
   Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
   EXPECT_VALID(lib);
 
-  Dart_Handle closure = Dart_GetClosure(lib, NewString("getInt"));
+  Dart_Handle closure = Dart_GetField(lib, NewString("getInt"));
   EXPECT_VALID(closure);
   if (Dart_IsClosure(closure)) {
     closure = Dart_ClosureFunction(closure);
@@ -882,7 +882,7 @@
   Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
   EXPECT_VALID(lib);
 
-  Dart_Handle closure = Dart_GetClosure(lib, NewString("getInt"));
+  Dart_Handle closure = Dart_GetField(lib, NewString("getInt"));
   EXPECT_VALID(closure);
   EXPECT(Dart_IsClosure(closure));
   Dart_Handle closure_str = Dart_ToString(closure);
@@ -3850,8 +3850,9 @@
 }
 
 static void TestFieldNotFound(Dart_Handle container, Dart_Handle name) {
-  EXPECT(Dart_IsError(Dart_GetField(container, name)));
-  EXPECT(Dart_IsError(Dart_SetField(container, name, Dart_Null())));
+  EXPECT_ERROR(Dart_GetField(container, name), "NoSuchMethodError");
+  EXPECT_ERROR(Dart_SetField(container, name, Dart_Null()),
+               "NoSuchMethodError");
 }
 
 TEST_CASE(DartAPI_FieldAccess) {
@@ -4083,7 +4084,7 @@
   name = NewString("imported_fld");
   TestFieldNotFound(type, name);
   TestFieldNotFound(instance, name);
-  TestFieldOk(lib, name, false, "imported");
+  TestFieldNotFound(lib, name);
 
   // Hidden imported top-level field.  Not found at any level.
   name = NewString("_imported_fld");
@@ -4095,7 +4096,7 @@
   name = NewString("imported_getset_fld");
   TestFieldNotFound(type, name);
   TestFieldNotFound(instance, name);
-  TestFieldOk(lib, name, false, "imported getset");
+  TestFieldNotFound(lib, name);
 
   // Hidden imported top-level get/set field.  Not found at any level.
   name = NewString("_imported_getset_fld");
@@ -5006,7 +5007,8 @@
 
   // Static method, wrong arg count.
   EXPECT_ERROR(Dart_Invoke(type, name, 2, bad_args),
-               "did not find static method 'Methods.staticMethod'");
+               "NoSuchMethodError: No static method 'staticMethod' with "
+               "matching arguments");
 
   // Hidden static method.
   name = NewString("_staticMethod");
@@ -5034,8 +5036,8 @@
 
   // Top-level method, wrong arg count.
   EXPECT_ERROR(Dart_Invoke(lib, name, 2, bad_args),
-               "Dart_Invoke: wrong argument count for function 'topMethod': "
-               "2 passed, 1 expected.");
+               "NoSuchMethodError: No top-level method 'topMethod' with "
+               "matching arguments");
 
   // Hidden top-level method.
   name = NewString("_topMethod");
@@ -5131,6 +5133,17 @@
   result = Dart_Invoke(Dart_Null(), function_name, 0, NULL);
   EXPECT(Dart_IsError(result));
   EXPECT(Dart_ErrorHasException(result));
+
+  result = Dart_GetField(Dart_Null(), NewString("toString"));
+  EXPECT_VALID(result);
+  EXPECT(Dart_IsClosure(result));
+
+  result =
+      Dart_SetField(Dart_Null(), NewString("nullHasNoSetters"), Dart_Null());
+  // Not that Dart_SetField expects a non-null receiver.
+  EXPECT_ERROR(
+      result,
+      "NoSuchMethodError: The setter 'nullHasNoSetters=' was called on null");
 }
 
 TEST_CASE(DartAPI_InvokeNoSuchMethod) {
@@ -5228,10 +5241,11 @@
   EXPECT_VALID(Dart_Invoke(lib1, NewString("local"), 0, NULL));
   EXPECT_VALID(Dart_Invoke(lib1, NewString("_local"), 0, NULL));
 
-  // We can only invoke non-private imported functions.
-  EXPECT_VALID(Dart_Invoke(lib1, NewString("imported"), 0, NULL));
+  // We cannot invoke imported functions (the library is an explicit receiver).
+  EXPECT_ERROR(Dart_Invoke(lib1, NewString("imported"), 0, NULL),
+               "NoSuchMethodError: No top-level method 'imported' declared");
   EXPECT_ERROR(Dart_Invoke(lib1, NewString("_imported"), 0, NULL),
-               "did not find top-level function '_imported'");
+               "NoSuchMethodError: No top-level method '_imported' declared");
 }
 
 TEST_CASE(DartAPI_InvokeClosure) {
@@ -6029,7 +6043,7 @@
   // not be found directly in lib2.
   Dart_Handle method_name = NewString("foo");
   result = Dart_Invoke(lib2, method_name, 0, NULL);
-  EXPECT_ERROR(result, "Dart_Invoke: did not find top-level function 'foo'");
+  EXPECT_ERROR(result, "NoSuchMethodError: No top-level method 'foo' declared");
 
   // Check that lib1 is available under the prefix in lib2.
   method_name = NewString("foobar");
@@ -9107,12 +9121,8 @@
 
   Dart_Handle args[2] = {Dart_NewInteger(123), Dart_NewInteger(321)};
   Dart_Handle result = Dart_Invoke(lib, max, 2, args);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsNumber(result));
-
-  int64_t result_value;
-  EXPECT_VALID(Dart_IntegerToInt64(result, &result_value));
-  EXPECT(result_value == 321);
+  EXPECT_ERROR(result,
+               "NoSuchMethodError: No top-level method 'max' declared.");
 
   // The function 'getCurrentTag' is actually defined in the library
   // dart:developer. However, the library dart:profiler exports dart:developer
@@ -9121,7 +9131,9 @@
   // an interim solution until we fix DartAPI_Invoke_CrossLibrary.
   Dart_Handle getCurrentTag = Dart_NewStringFromCString("getCurrentTag");
   result = Dart_Invoke(lib, getCurrentTag, 0, NULL);
-  EXPECT_VALID(result);
+  EXPECT_ERROR(
+      result,
+      "NoSuchMethodError: No top-level method 'getCurrentTag' declared.");
 }
 
 #endif  // !PRODUCT
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 1e74d39..b2493cc 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -130,7 +130,7 @@
   P(new_gen_semi_initial_size, int, (kWordSize <= 4) ? 1 : 2,                  \
     "Initial size of new gen semi space in MB")                                \
   P(omit_strong_type_checks, bool, false, "Omit strong mode type checks.")     \
-  P(optimization_counter_threshold, int, 30000,                                \
+  P(optimization_counter_threshold, int, USING_KBC ? -1 : 30000,               \
     "Function's usage-counter value before it is optimized, -1 means never")   \
   P(old_gen_heap_size, int, kDefaultMaxOldGenHeapSize,                         \
     "Max size of old gen heap size in MB, or 0 for unlimited,"                 \
diff --git a/runtime/vm/heap/pages.cc b/runtime/vm/heap/pages.cc
index 253da16..0d13154 100644
--- a/runtime/vm/heap/pages.cc
+++ b/runtime/vm/heap/pages.cc
@@ -1367,10 +1367,9 @@
   gc_threshold_in_words_ =
       after.CombinedCapacityInWords() + (kPageSizeInWords * grow_heap);
 
-  // Set the idle threshold halfway between the current capacity and the
-  // capacity at which we'd block for a GC.
+  // Set a tight idle threshold.
   idle_gc_threshold_in_words_ =
-      (after.CombinedCapacityInWords() + gc_threshold_in_words_) / 2;
+      after.CombinedCapacityInWords() + 2 * kPageSizeInWords;
 
   if (FLAG_log_growth) {
     THR_Print("%s: threshold=%" Pd "kB, idle_threshold=%" Pd "kB\n",
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index 90fa8fb..e3cacc7 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -362,17 +362,16 @@
     // 2. Write a label at the entry point.
     // Linux's perf uses these labels.
     if (code.IsNull()) {
-      const char* name = tts.StubNameFromAddresss(insns.UncheckedEntryPoint());
+      const char* name = tts.StubNameFromAddresss(insns.EntryPoint());
       assembly_stream_.Print("Precompiled_%s:\n", name);
     } else {
       owner = code.owner();
       if (owner.IsNull()) {
-        const char* name = StubCode::NameOfStub(insns.UncheckedEntryPoint());
+        const char* name = StubCode::NameOfStub(insns.EntryPoint());
         if (name != NULL) {
           assembly_stream_.Print("Precompiled_Stub_%s:\n", name);
         } else {
-          const char* name =
-              tts.StubNameFromAddresss(insns.UncheckedEntryPoint());
+          const char* name = tts.StubNameFromAddresss(insns.EntryPoint());
           assembly_stream_.Print("Precompiled__%s:\n", name);
         }
       } else if (owner.IsClass()) {
diff --git a/runtime/vm/interpreter.cc b/runtime/vm/interpreter.cc
index 0e852bf..a1ba31b 100644
--- a/runtime/vm/interpreter.cc
+++ b/runtime/vm/interpreter.cc
@@ -1644,13 +1644,14 @@
     RawTypeArguments* instance_type_arguments =
         static_cast<RawTypeArguments*>(null_value);
     RawObject* instance_cid_or_function;
+
+    RawTypeArguments* parent_function_type_arguments;
+    RawTypeArguments* delayed_function_type_arguments;
     if (cid == kClosureCid) {
       RawClosure* closure = static_cast<RawClosure*>(instance);
-      if (closure->ptr()->function_type_arguments_ != TypeArguments::null()) {
-        // Cache cannot be used for generic closures.
-        goto AssertAssignableCallRuntime;
-      }
       instance_type_arguments = closure->ptr()->instantiator_type_arguments_;
+      parent_function_type_arguments = closure->ptr()->function_type_arguments_;
+      delayed_function_type_arguments = closure->ptr()->delayed_type_arguments_;
       instance_cid_or_function = closure->ptr()->function_;
     } else {
       instance_cid_or_function = Smi::New(cid);
@@ -1663,6 +1664,10 @@
             instance->ptr())[instance_class->ptr()
                                  ->type_arguments_field_offset_in_words_];
       }
+      parent_function_type_arguments =
+          static_cast<RawTypeArguments*>(null_value);
+      delayed_function_type_arguments =
+          static_cast<RawTypeArguments*>(null_value);
     }
 
     for (RawObject** entries = cache->ptr()->cache_->ptr()->data();
@@ -1675,7 +1680,11 @@
           (entries[SubtypeTestCache::kInstantiatorTypeArguments] ==
            instantiator_type_arguments) &&
           (entries[SubtypeTestCache::kFunctionTypeArguments] ==
-           function_type_arguments)) {
+           function_type_arguments) &&
+          (entries[SubtypeTestCache::kInstanceParentFunctionTypeArguments] ==
+           parent_function_type_arguments) &&
+          (entries[SubtypeTestCache::kInstanceDelayedFunctionTypeArguments] ==
+           delayed_function_type_arguments)) {
         if (Bool::True().raw() == entries[SubtypeTestCache::kTestResult]) {
           return true;
         } else {
@@ -2331,7 +2340,7 @@
   }
 
   {
-    BYTECODE(InstanceCall1, A_D);
+    BYTECODE(InstanceCall, A_D);
 
     // Check if single stepping.
     if (thread->isolate()->single_step()) {
@@ -2350,36 +2359,18 @@
       RawICData* icdata = RAW_CAST(ICData, LOAD_CONSTANT(kidx));
       InterpreterHelpers::IncrementUsageCounter(
           RAW_CAST(Function, icdata->ptr()->owner_));
-      if (!InstanceCall1(thread, icdata, call_base, call_top, &pc, &FP, &SP,
-                         false /* optimized */)) {
-        HANDLE_EXCEPTION;
-      }
-    }
-
-    DISPATCH();
-  }
-
-  {
-    BYTECODE(InstanceCall2, A_D);
-    if (thread->isolate()->single_step()) {
-      Exit(thread, FP, SP + 1, pc);
-      NativeArguments args(thread, 0, NULL, NULL);
-      INVOKE_RUNTIME(DRT_SingleStepHandler, args);
-    }
-
-    {
-      const uint16_t argc = rA;
-      const uint16_t kidx = rD;
-
-      RawObject** call_base = SP - argc + 1;
-      RawObject** call_top = SP + 1;
-
-      RawICData* icdata = RAW_CAST(ICData, LOAD_CONSTANT(kidx));
-      InterpreterHelpers::IncrementUsageCounter(
-          RAW_CAST(Function, icdata->ptr()->owner_));
-      if (!InstanceCall2(thread, icdata, call_base, call_top, &pc, &FP, &SP,
-                         false /* optimized */)) {
-        HANDLE_EXCEPTION;
+      if (ICData::NumArgsTestedBits::decode(icdata->ptr()->state_bits_) == 1) {
+        if (!InstanceCall1(thread, icdata, call_base, call_top, &pc, &FP, &SP,
+                           false /* optimized */)) {
+          HANDLE_EXCEPTION;
+        }
+      } else {
+        ASSERT(ICData::NumArgsTestedBits::decode(icdata->ptr()->state_bits_) ==
+               2);
+        if (!InstanceCall2(thread, icdata, call_base, call_top, &pc, &FP, &SP,
+                           false /* optimized */)) {
+          HANDLE_EXCEPTION;
+        }
       }
     }
 
@@ -3813,13 +3804,15 @@
       RawTypeArguments* instance_type_arguments =
           static_cast<RawTypeArguments*>(null_value);
       RawObject* instance_cid_or_function;
+      RawTypeArguments* parent_function_type_arguments;
+      RawTypeArguments* delayed_function_type_arguments;
       if (cid == kClosureCid) {
         RawClosure* closure = static_cast<RawClosure*>(instance);
-        if (closure->ptr()->function_type_arguments_ != TypeArguments::null()) {
-          // Cache cannot be used for generic closures.
-          goto InstanceOfCallRuntime;
-        }
         instance_type_arguments = closure->ptr()->instantiator_type_arguments_;
+        parent_function_type_arguments =
+            closure->ptr()->function_type_arguments_;
+        delayed_function_type_arguments =
+            closure->ptr()->delayed_type_arguments_;
         instance_cid_or_function = closure->ptr()->function_;
       } else {
         instance_cid_or_function = Smi::New(cid);
@@ -3832,6 +3825,10 @@
               instance->ptr())[instance_class->ptr()
                                    ->type_arguments_field_offset_in_words_];
         }
+        parent_function_type_arguments =
+            static_cast<RawTypeArguments*>(null_value);
+        delayed_function_type_arguments =
+            static_cast<RawTypeArguments*>(null_value);
       }
 
       for (RawObject** entries = cache->ptr()->cache_->ptr()->data();
@@ -3844,7 +3841,11 @@
             (entries[SubtypeTestCache::kInstantiatorTypeArguments] ==
              instantiator_type_arguments) &&
             (entries[SubtypeTestCache::kFunctionTypeArguments] ==
-             function_type_arguments)) {
+             function_type_arguments) &&
+            (entries[SubtypeTestCache::kInstanceParentFunctionTypeArguments] ==
+             parent_function_type_arguments) &&
+            (entries[SubtypeTestCache::kInstanceDelayedFunctionTypeArguments] ==
+             delayed_function_type_arguments)) {
           SP[-4] = entries[SubtypeTestCache::kTestResult];
           goto InstanceOfOk;
         }
diff --git a/runtime/vm/isolate_reload_test.cc b/runtime/vm/isolate_reload_test.cc
index 0873b0e..9f56a44 100644
--- a/runtime/vm/isolate_reload_test.cc
+++ b/runtime/vm/isolate_reload_test.cc
@@ -1633,7 +1633,7 @@
         "Tried calling: C.foo()\n"
         "Found: C.foo(dynamic) => dynamic\n"
         "#0      Object.noSuchMethod "
-        "(dart:core/runtime/libobject_patch.dart:47:5)\n"
+        "(dart:core/runtime/libobject_patch.dart:48:5)\n"
         "#1      main (file:///test-lib:8:12)";
   } else {
     error =
@@ -1643,7 +1643,7 @@
         "Tried calling: C.foo()\n"
         "Found: C.foo(dynamic) => dynamic\n"
         "#0      Object.noSuchMethod "
-        "(dart:core-patch/dart:core/object_patch.dart:47)\n"
+        "(dart:core-patch/dart:core/object_patch.dart:48)\n"
         "#1      main (test-lib:8:12)";
   }
   EXPECT_ERROR(error_handle, error);
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index cc3ad47..61947f5 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -183,7 +183,9 @@
       external_name_field_(Field::Handle(Z)),
       potential_natives_(GrowableObjectArray::Handle(Z)),
       potential_extension_libraries_(GrowableObjectArray::Handle(Z)),
-      pragma_class_(Class::Handle(Z)) {
+      pragma_class_(Class::Handle(Z)),
+      expression_evaluation_library_(Library::Handle(Z)),
+      expression_evaluation_function_(Function::Handle(Z)) {
   if (!program->is_single_program()) {
     FATAL(
         "Trying to load a concatenated dill file at a time where that is "
@@ -344,7 +346,9 @@
       external_name_field_(Field::Handle(Z)),
       potential_natives_(GrowableObjectArray::Handle(Z)),
       potential_extension_libraries_(GrowableObjectArray::Handle(Z)),
-      pragma_class_(Class::Handle(Z)) {
+      pragma_class_(Class::Handle(Z)),
+      expression_evaluation_library_(Library::Handle(Z)),
+      expression_evaluation_function_(Function::Handle(Z)) {
   ASSERT(T.active_class_ == &active_class_);
   T.finalize_ = false;
 
@@ -543,7 +547,7 @@
       {
         TransitionVMToNative transition(thread_);
         Api::Scope api_scope(thread_);
-        Dart_Handle retval = handler(Dart_kImportResolvedExtensionTag,
+        Dart_Handle retval = handler(Dart_kImportExtensionTag,
                                      Api::NewHandle(thread_, library.raw()),
                                      Api::NewHandle(thread_, uri_path.raw()));
         result = Api::UnwrapHandle(retval);
@@ -617,6 +621,49 @@
   return error;
 }
 
+RawObject* KernelLoader::LoadExpressionEvaluationFunction(
+    const String& library_url,
+    const String& klass) {
+  // Find the original context, i.e. library/class, in which the evaluation will
+  // happen.
+  const Library& real_library = Library::Handle(
+      Z, Library::LookupLibrary(Thread::Current(), library_url));
+  ASSERT(!real_library.IsNull());
+  const Class& real_class = Class::Handle(
+      Z, klass.IsNull() ? real_library.toplevel_class()
+                        : real_library.LookupClassAllowPrivate(klass));
+  ASSERT(!real_class.IsNull());
+
+  const intptr_t num_cids = I->class_table()->NumCids();
+  const intptr_t num_libs =
+      GrowableObjectArray::Handle(I->object_store()->libraries()).Length();
+
+  // Load the "evaluate:source" expression evaluation library.
+  ASSERT(expression_evaluation_library_.IsNull());
+  ASSERT(expression_evaluation_function_.IsNull());
+  const Object& result = Object::Handle(Z, LoadProgram(true));
+  if (result.IsError()) {
+    return result.raw();
+  }
+  ASSERT(!expression_evaluation_library_.IsNull());
+  ASSERT(!expression_evaluation_function_.IsNull());
+  ASSERT(GrowableObjectArray::Handle(I->object_store()->libraries()).Length() ==
+         num_libs);
+  ASSERT(I->class_table()->NumCids() == num_cids);
+
+  // Make the expression evaluation function have the right kernel data and
+  // parent.
+  auto& eval_data = ExternalTypedData::Handle(
+      Z, expression_evaluation_library_.kernel_data());
+  auto& eval_script =
+      Script::Handle(Z, expression_evaluation_function_.script());
+  expression_evaluation_function_.SetKernelDataAndScript(
+      eval_script, eval_data, expression_evaluation_library_.kernel_offset());
+  expression_evaluation_function_.set_owner(real_class);
+
+  return expression_evaluation_function_.raw();
+}
+
 void KernelLoader::FindModifiedLibraries(Program* program,
                                          Isolate* isolate,
                                          BitVector* modified_libs,
@@ -780,9 +827,16 @@
   library_helper.SetJustRead(LibraryHelper::kAnnotations);
 
   // Setup toplevel class (which contains library fields/procedures).
+
+  // We do not register expression evaluation classes with the VM:
+  // The expression evaluation functions should be GC-able as soon as
+  // they are not reachable anymore and we never look them up by name.
+  const bool register_class =
+      library.raw() != expression_evaluation_library_.raw();
+
   Class& toplevel_class =
       Class::Handle(Z, Class::New(library, Symbols::TopLevel(), script,
-                                  TokenPosition::kNoSource));
+                                  TokenPosition::kNoSource, register_class));
   toplevel_class.set_is_cycle_free();
   library.set_toplevel_class(toplevel_class);
 
@@ -801,8 +855,10 @@
   for (intptr_t i = 0; i < class_count; ++i) {
     helper_.SetOffset(next_class_offset);
     next_class_offset = library_index.ClassOffset(i + 1);
-    classes.Add(LoadClass(library, toplevel_class, next_class_offset),
-                Heap::kOld);
+    const Class& klass = LoadClass(library, toplevel_class, next_class_offset);
+    if (register_class) {
+      classes.Add(klass, Heap::kOld);
+    }
   }
   helper_.SetOffset(next_class_offset);
 
@@ -881,7 +937,9 @@
   }
 
   toplevel_class.SetFunctions(Array::Handle(MakeFunctionsArray()));
-  classes.Add(toplevel_class, Heap::kOld);
+  if (register_class) {
+    classes.Add(toplevel_class, Heap::kOld);
+  }
   if (!library.Loaded()) library.SetLoaded();
 
   return library.raw();
@@ -1161,7 +1219,13 @@
                              class_offset - correction_offset_);
   }
 
-  if (loading_native_wrappers_library_) {
+  // We do not register expression evaluation classes with the VM:
+  // The expression evaluation functions should be GC-able as soon as
+  // they are not reachable anymore and we never look them up by name.
+  const bool register_class =
+      library.raw() != expression_evaluation_library_.raw();
+
+  if (loading_native_wrappers_library_ || !register_class) {
     FinishClassLoading(klass, library, toplevel_class, class_offset,
                        class_index, &class_helper);
   }
@@ -1514,6 +1578,12 @@
   const Object& script_class =
       ClassForScriptAt(owner, procedure_helper.source_uri_index_);
   RawFunction::Kind kind = GetFunctionType(procedure_helper.kind_);
+
+  // We do not register expression evaluation libraries with the VM:
+  // The expression evaluation functions should be GC-able as soon as
+  // they are not reachable anymore and we never look them up by name.
+  const bool register_function = !name.Equals(Symbols::DebugProcedureName());
+
   Function& function = Function::ZoneHandle(
       Z, Function::New(name, kind,
                        !is_method,  // is_static
@@ -1523,7 +1593,11 @@
                        script_class, procedure_helper.start_position_));
   function.set_has_pragma(has_pragma_annotation);
   function.set_end_token_pos(procedure_helper.end_position_);
-  functions_.Add(&function);
+  if (register_function) {
+    functions_.Add(&function);
+  } else {
+    expression_evaluation_function_ = function.raw();
+  }
   function.set_kernel_offset(procedure_offset);
 
   ActiveMemberScope active_member(&active_class_, &function);
@@ -1787,11 +1861,23 @@
 Library& KernelLoader::LookupLibrary(NameIndex library) {
   Library* handle = NULL;
   if (!libraries_.Lookup(library, &handle)) {
-    const String& url = H.DartString(H.CanonicalNameString(library));
-    handle = &Library::Handle(Z, Library::LookupLibrary(thread_, url));
-    if (handle->IsNull()) {
-      *handle = Library::New(url);
-      handle->Register(thread_);
+    handle = &Library::Handle(Z);
+    const String& url = H.DartSymbolPlain(H.CanonicalNameString(library));
+
+    // We do not register expression evaluation libraries with the VM:
+    // The expression evaluation functions should be GC-able as soon as
+    // they are not reachable anymore and we never look them up by name.
+    if (url.Equals(Symbols::EvalSourceUri())) {
+      if (handle->IsNull()) {
+        *handle = Library::New(url);
+        expression_evaluation_library_ = handle->raw();
+      }
+    } else {
+      *handle = Library::LookupLibrary(thread_, url);
+      if (handle->IsNull()) {
+        *handle = Library::New(url);
+        handle->Register(thread_);
+      }
     }
     ASSERT(!handle->IsNull());
     libraries_.Insert(library, handle);
@@ -1806,9 +1892,17 @@
     const String& name = H.DartClassName(klass);
     handle = &Class::Handle(Z, library.LookupLocalClass(name));
     if (handle->IsNull()) {
+      // We do not register expression evaluation classes with the VM:
+      // The expression evaluation functions should be GC-able as soon as
+      // they are not reachable anymore and we never look them up by name.
+      const bool register_class =
+          library.raw() != expression_evaluation_library_.raw();
+
       *handle = Class::New(library, name, Script::Handle(Z),
-                           TokenPosition::kNoSource);
-      library.AddClass(*handle);
+                           TokenPosition::kNoSource, register_class);
+      if (register_class) {
+        library.AddClass(*handle);
+      }
     }
     // Insert the class in the cache before calling ReadPreliminaryClass so
     // we do not risk allocating the class again by calling LookupClass
diff --git a/runtime/vm/kernel_loader.h b/runtime/vm/kernel_loader.h
index 7b77dd9..6aa798d 100644
--- a/runtime/vm/kernel_loader.h
+++ b/runtime/vm/kernel_loader.h
@@ -133,6 +133,11 @@
   // was no main procedure, or a failure object if there was an error.
   RawObject* LoadProgram(bool process_pending_classes = true);
 
+  // Returns the function which will evaluate the expression, or a failure
+  // object if there was an error.
+  RawObject* LoadExpressionEvaluationFunction(const String& library_url,
+                                              const String& klass);
+
   // Finds all libraries that have been modified in this incremental
   // version of the kernel program file.
   static void FindModifiedLibraries(Program* program,
@@ -331,6 +336,33 @@
   Mapping<Library> libraries_;
   Mapping<Class> classes_;
 
+  // We "re-use" the normal .dill file format for encoding compiled evaluation
+  // expressions from the debugger.  This allows us to also reuse the normal
+  // a) kernel loader b) flow graph building code.  The encoding is either one
+  // of the following two options:
+  //
+  //   * Option a) The expression is evaluated inside an instance method call
+  //               context:
+  //
+  //   Program:
+  //   |> library "evaluate:source"
+  //      |> class "#DebugClass"
+  //         |> procedure ":Eval"
+  //
+  //   * Option b) The expression is evaluated outside an instance method call
+  //               context:
+  //
+  //   Program:
+  //   |> library "evaluate:source"
+  //      |> procedure ":Eval"
+  //
+  // See
+  //   * pkg/front_end/lib/src/fasta/incremental_compiler.dart:compileExpression
+  //   * pkg/front_end/lib/src/fasta/kernel/utils.dart:serializeProcedure
+  //
+  Library& expression_evaluation_library_;
+  Function& expression_evaluation_function_;
+
   GrowableArray<const Function*> functions_;
   GrowableArray<const Field*> fields_;
 
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index dbefe80..0d14fc2 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -65,12 +65,6 @@
             "Huge method cutoff in unoptimized code size (in bytes).");
 DEFINE_FLAG(
     bool,
-    overlap_type_arguments,
-    true,
-    "When possible, partially or fully overlap the type arguments of a type "
-    "with the type arguments of its super type.");
-DEFINE_FLAG(
-    bool,
     show_internal_names,
     false,
     "Show names of internal classes (e.g. \"OneByteString\") in error messages "
@@ -2533,8 +2527,7 @@
   Isolate* isolate = thread->isolate();
   Zone* zone = thread->zone();
   const intptr_t num_type_params = NumTypeParameters();
-  if (!FLAG_overlap_type_arguments || (num_type_params == 0) ||
-      (super_type() == AbstractType::null()) ||
+  if ((num_type_params == 0) || (super_type() == AbstractType::null()) ||
       (super_type() == isolate->object_store()->object_type())) {
     set_num_own_type_arguments(num_type_params);
     return num_type_params;
@@ -3348,6 +3341,196 @@
   return func.raw();
 }
 
+// Conventions:
+// * For throwing a NSM in a class klass we use its runtime type as receiver,
+//   i.e., klass.RareType().
+// * For throwing a NSM in a library, we just pass the null instance as
+//   receiver.
+static RawObject* ThrowNoSuchMethod(const Instance& receiver,
+                                    const String& function_name,
+                                    const Array& arguments,
+                                    const Array& argument_names,
+                                    const InvocationMirror::Level level,
+                                    const InvocationMirror::Kind kind) {
+  const Smi& invocation_type =
+      Smi::Handle(Smi::New(InvocationMirror::EncodeType(level, kind)));
+
+  const Array& args = Array::Handle(Array::New(6));
+  args.SetAt(0, receiver);
+  args.SetAt(1, function_name);
+  args.SetAt(2, invocation_type);
+  // TODO(regis): Support invocation of generic functions with type arguments.
+  args.SetAt(3, Object::null_type_arguments());
+  args.SetAt(4, arguments);
+  args.SetAt(5, argument_names);
+
+  const Library& libcore = Library::Handle(Library::CoreLibrary());
+  const Class& NoSuchMethodError =
+      Class::Handle(libcore.LookupClass(Symbols::NoSuchMethodError()));
+  const Function& throwNew = Function::Handle(
+      NoSuchMethodError.LookupFunctionAllowPrivate(Symbols::ThrowNew()));
+  return DartEntry::InvokeFunction(throwNew, args);
+}
+
+RawObject* Class::InvokeGetter(const String& getter_name,
+                               bool throw_nsm_if_absent,
+                               bool respect_reflectable) const {
+  Thread* thread = Thread::Current();
+  Zone* zone = thread->zone();
+
+  const Error& error = Error::Handle(zone, EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    return error.raw();
+  }
+
+  // Note static fields do not have implicit getters.
+  const Field& field = Field::Handle(zone, LookupStaticField(getter_name));
+  if (field.IsNull() || field.IsUninitialized()) {
+    const String& internal_getter_name =
+        String::Handle(zone, Field::GetterName(getter_name));
+    Function& getter =
+        Function::Handle(zone, LookupStaticFunction(internal_getter_name));
+
+    if (getter.IsNull() || (respect_reflectable && !getter.is_reflectable())) {
+      if (getter.IsNull()) {
+        getter = LookupStaticFunction(getter_name);
+        if (!getter.IsNull()) {
+          // Looking for a getter but found a regular method: closurize it.
+          const Function& closure_function =
+              Function::Handle(zone, getter.ImplicitClosureFunction());
+          return closure_function.ImplicitStaticClosure();
+        }
+      }
+      if (throw_nsm_if_absent) {
+        return ThrowNoSuchMethod(
+            AbstractType::Handle(zone, RareType()), getter_name,
+            Object::null_array(), Object::null_array(),
+            InvocationMirror::kStatic, InvocationMirror::kGetter);
+      }
+      // Fall through case: Indicate that we didn't find any function or field
+      // using a special null instance. This is different from a field being
+      // null. Callers make sure that this null does not leak into Dartland.
+      return Object::sentinel().raw();
+    }
+
+    // Invoke the getter and return the result.
+    return DartEntry::InvokeFunction(getter, Object::empty_array());
+  }
+
+  return field.StaticValue();
+}
+
+RawObject* Class::InvokeSetter(const String& setter_name,
+                               const Instance& value,
+                               bool respect_reflectable) const {
+  Thread* thread = Thread::Current();
+  Zone* zone = thread->zone();
+
+  const Error& error = Error::Handle(zone, EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    return error.raw();
+  }
+
+  // Check for real fields and user-defined setters.
+  const Field& field = Field::Handle(zone, LookupStaticField(setter_name));
+  const String& internal_setter_name =
+      String::Handle(zone, Field::SetterName(setter_name));
+
+  if (field.IsNull()) {
+    const Function& setter =
+        Function::Handle(zone, LookupStaticFunction(internal_setter_name));
+
+    const int kNumArgs = 1;
+    const Array& args = Array::Handle(zone, Array::New(kNumArgs));
+    args.SetAt(0, value);
+
+    if (setter.IsNull() || (respect_reflectable && !setter.is_reflectable())) {
+      return ThrowNoSuchMethod(AbstractType::Handle(zone, RareType()),
+                               internal_setter_name, args, Object::null_array(),
+                               InvocationMirror::kStatic,
+                               InvocationMirror::kSetter);
+    }
+
+    // Invoke the setter and return the result.
+    return DartEntry::InvokeFunction(setter, args);
+  }
+
+  if (field.is_final() || (respect_reflectable && !field.is_reflectable())) {
+    const int kNumArgs = 1;
+    const Array& args = Array::Handle(zone, Array::New(kNumArgs));
+    args.SetAt(0, value);
+
+    return ThrowNoSuchMethod(AbstractType::Handle(zone, RareType()),
+                             internal_setter_name, args, Object::null_array(),
+                             InvocationMirror::kStatic,
+                             InvocationMirror::kSetter);
+  }
+
+  field.SetStaticValue(value);
+  return value.raw();
+}
+
+RawObject* Class::Invoke(const String& function_name,
+                         const Array& args,
+                         const Array& arg_names,
+                         bool respect_reflectable) const {
+  Thread* thread = Thread::Current();
+  Zone* zone = thread->zone();
+
+  // TODO(regis): Support invocation of generic functions with type arguments.
+  const int kTypeArgsLen = 0;
+  const Error& error = Error::Handle(zone, EnsureIsFinalized(thread));
+  if (!error.IsNull()) {
+    return error.raw();
+  }
+
+  Function& function =
+      Function::Handle(zone, LookupStaticFunction(function_name));
+
+  if (function.IsNull()) {
+    // Didn't find a method: try to find a getter and invoke call on its result.
+    const String& getter_name =
+        String::Handle(zone, Field::GetterName(function_name));
+    function = LookupStaticFunction(getter_name);
+    if (!function.IsNull()) {
+      // Invoke the getter.
+      const Object& getter_result = Object::Handle(
+          zone, DartEntry::InvokeFunction(function, Object::empty_array()));
+      if (getter_result.IsError()) {
+        return getter_result.raw();
+      }
+      // Make room for the closure (receiver) in the argument list.
+      const intptr_t num_args = args.Length();
+      const Array& call_args = Array::Handle(zone, Array::New(num_args + 1));
+      Object& temp = Object::Handle(zone);
+      for (int i = 0; i < num_args; i++) {
+        temp = args.At(i);
+        call_args.SetAt(i + 1, temp);
+      }
+      call_args.SetAt(0, getter_result);
+      const Array& call_args_descriptor_array =
+          Array::Handle(zone, ArgumentsDescriptor::New(
+                                  kTypeArgsLen, call_args.Length(), arg_names));
+      // Call the closure.
+      return DartEntry::InvokeClosure(call_args, call_args_descriptor_array);
+    }
+  }
+
+  const Array& args_descriptor_array = Array::Handle(
+      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
+
+  ArgumentsDescriptor args_descriptor(args_descriptor_array);
+
+  if (function.IsNull() || !function.AreValidArguments(args_descriptor, NULL) ||
+      (respect_reflectable && !function.is_reflectable())) {
+    return ThrowNoSuchMethod(
+        AbstractType::Handle(zone, RareType()), function_name, args, arg_names,
+        InvocationMirror::kStatic, InvocationMirror::kMethod);
+  }
+
+  return DartEntry::InvokeFunction(function, args, args_descriptor_array);
+}
+
 RawObject* Class::Evaluate(const String& expr,
                            const Array& param_names,
                            const Array& param_values) const {
@@ -3529,14 +3712,17 @@
 RawClass* Class::New(const Library& lib,
                      const String& name,
                      const Script& script,
-                     TokenPosition token_pos) {
+                     TokenPosition token_pos,
+                     bool register_class) {
   Class& result = Class::Handle(NewCommon<Instance>(kIllegalCid));
   result.set_library(lib);
   result.set_name(name);
   result.set_script(script);
   result.set_token_pos(token_pos);
   result.set_kernel_offset(-1);
-  Isolate::Current()->RegisterClass(result);
+  if (register_class) {
+    Isolate::Current()->RegisterClass(result);
+  }
   return result.raw();
 }
 
@@ -5736,7 +5922,7 @@
 
 void Function::SetInstructionsSafe(const Code& value) const {
   StorePointer(&raw_ptr()->code_, value.raw());
-  StoreNonPointer(&raw_ptr()->entry_point_, value.UncheckedEntryPoint());
+  StoreNonPointer(&raw_ptr()->entry_point_, value.EntryPoint());
 }
 
 void Function::AttachCode(const Code& value) const {
@@ -5821,7 +6007,7 @@
 
   if (FLAG_trace_deoptimization_verbose) {
     THR_Print("Disabling optimized code: '%s' entry: %#" Px "\n",
-              ToFullyQualifiedCString(), current_code.UncheckedEntryPoint());
+              ToFullyQualifiedCString(), current_code.EntryPoint());
   }
   current_code.DisableDartCode();
   const Error& error =
@@ -10083,7 +10269,8 @@
 
   if (kind() == RawScript::kKernelTag) {
     const TypedData& line_starts_data = TypedData::Handle(line_starts());
-    if (line_starts_data.IsNull()) {
+    const String& source = String::Handle(Source());
+    if (line_starts_data.IsNull() || source.IsNull()) {
       // Scripts in the AOT snapshot do not have a line starts array.
       *first_token_index = TokenPosition::kNoSource;
       *last_token_index = TokenPosition::kNoSource;
@@ -10092,9 +10279,8 @@
 #if !defined(DART_PRECOMPILED_RUNTIME)
     kernel::KernelLineStartsReader line_starts_reader(
         line_starts_data, Thread::Current()->zone());
-    line_starts_reader.TokenRangeAtLine(String::Handle(Source()).Length(),
-                                        line_number, first_token_index,
-                                        last_token_index);
+    line_starts_reader.TokenRangeAtLine(source.Length(), line_number,
+                                        first_token_index, last_token_index);
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
     return;
   }
@@ -11206,6 +11392,15 @@
   return LookupEntry(name, &index);
 }
 
+RawObject* Library::LookupLocalOrReExportObject(const String& name) const {
+  intptr_t index;
+  const Object& result = Object::Handle(LookupEntry(name, &index));
+  if (!result.IsNull() && !result.IsLibraryPrefix()) {
+    return result.raw();
+  }
+  return LookupReExport(name);
+}
+
 RawField* Library::LookupFieldAllowPrivate(const String& name) const {
   Object& obj = Object::Handle(LookupObjectAllowPrivate(name));
   if (obj.IsField()) {
@@ -11609,6 +11804,168 @@
   core_lib.AddObject(cls, String::Handle(zone, cls.Name()));
 }
 
+// Invoke the function, or noSuchMethod if it is null.
+static RawObject* InvokeInstanceFunction(const Instance& receiver,
+                                         const Function& function,
+                                         const String& target_name,
+                                         const Array& args,
+                                         const Array& args_descriptor_array,
+                                         bool respect_reflectable) {
+  // Note "args" is already the internal arguments with the receiver as the
+  // first element.
+  ArgumentsDescriptor args_descriptor(args_descriptor_array);
+  if (function.IsNull() || !function.AreValidArguments(args_descriptor, NULL) ||
+      (respect_reflectable && !function.is_reflectable())) {
+    return DartEntry::InvokeNoSuchMethod(receiver, target_name, args,
+                                         args_descriptor_array);
+  }
+  return DartEntry::InvokeFunction(function, args, args_descriptor_array);
+}
+
+RawObject* Library::InvokeGetter(const String& getter_name,
+                                 bool throw_nsm_if_absent,
+                                 bool respect_reflectable) const {
+  Object& obj = Object::Handle(LookupLocalOrReExportObject(getter_name));
+  Function& getter = Function::Handle();
+  if (obj.IsField()) {
+    const Field& field = Field::Cast(obj);
+    if (!field.IsUninitialized()) {
+      return field.StaticValue();
+    }
+    // An uninitialized field was found.  Check for a getter in the field's
+    // owner class.
+    const Class& klass = Class::Handle(field.Owner());
+    const String& internal_getter_name =
+        String::Handle(Field::GetterName(getter_name));
+    getter = klass.LookupStaticFunction(internal_getter_name);
+  } else {
+    // No field found. Check for a getter in the lib.
+    const String& internal_getter_name =
+        String::Handle(Field::GetterName(getter_name));
+    obj = LookupLocalOrReExportObject(internal_getter_name);
+    if (obj.IsFunction()) {
+      getter = Function::Cast(obj).raw();
+    } else {
+      obj = LookupLocalOrReExportObject(getter_name);
+      if (obj.IsFunction()) {
+        // Looking for a getter but found a regular method: closurize it.
+        const Function& closure_function =
+            Function::Handle(Function::Cast(obj).ImplicitClosureFunction());
+        return closure_function.ImplicitStaticClosure();
+      }
+    }
+  }
+
+  if (getter.IsNull() || (respect_reflectable && !getter.is_reflectable())) {
+    if (throw_nsm_if_absent) {
+      return ThrowNoSuchMethod(
+          AbstractType::Handle(Class::Handle(toplevel_class()).RareType()),
+          getter_name, Object::null_array(), Object::null_array(),
+          InvocationMirror::kTopLevel, InvocationMirror::kGetter);
+    }
+
+    // Fall through case: Indicate that we didn't find any function or field
+    // using a special null instance. This is different from a field being null.
+    // Callers make sure that this null does not leak into Dartland.
+    return Object::sentinel().raw();
+  }
+
+  // Invoke the getter and return the result.
+  return DartEntry::InvokeFunction(getter, Object::empty_array());
+}
+
+RawObject* Library::InvokeSetter(const String& setter_name,
+                                 const Instance& value,
+                                 bool respect_reflectable) const {
+  Object& obj = Object::Handle(LookupLocalOrReExportObject(setter_name));
+  const String& internal_setter_name =
+      String::Handle(Field::SetterName(setter_name));
+
+  if (obj.IsField()) {
+    const Field& field = Field::Cast(obj);
+    if (field.is_final() || (respect_reflectable && !field.is_reflectable())) {
+      const int kNumArgs = 1;
+      const Array& args = Array::Handle(Array::New(kNumArgs));
+      args.SetAt(0, value);
+
+      return ThrowNoSuchMethod(
+          AbstractType::Handle(Class::Handle(toplevel_class()).RareType()),
+          internal_setter_name, args, Object::null_array(),
+          InvocationMirror::kTopLevel, InvocationMirror::kSetter);
+    }
+    field.SetStaticValue(value);
+    return value.raw();
+  }
+
+  Function& setter = Function::Handle();
+  obj = LookupLocalOrReExportObject(internal_setter_name);
+  if (obj.IsFunction()) {
+    setter ^= obj.raw();
+  }
+
+  const int kNumArgs = 1;
+  const Array& args = Array::Handle(Array::New(kNumArgs));
+  args.SetAt(0, value);
+  if (setter.IsNull() || (respect_reflectable && !setter.is_reflectable())) {
+    return ThrowNoSuchMethod(
+        AbstractType::Handle(Class::Handle(toplevel_class()).RareType()),
+        internal_setter_name, args, Object::null_array(),
+        InvocationMirror::kTopLevel, InvocationMirror::kSetter);
+  }
+
+  return DartEntry::InvokeFunction(setter, args);
+}
+
+RawObject* Library::Invoke(const String& function_name,
+                           const Array& args,
+                           const Array& arg_names,
+                           bool respect_reflectable) const {
+  // TODO(regis): Support invocation of generic functions with type arguments.
+  const int kTypeArgsLen = 0;
+
+  Function& function = Function::Handle();
+  Object& obj = Object::Handle(LookupLocalOrReExportObject(function_name));
+  if (obj.IsFunction()) {
+    function ^= obj.raw();
+  }
+
+  if (function.IsNull()) {
+    // Didn't find a method: try to find a getter and invoke call on its result.
+    const Object& getter_result =
+        Object::Handle(InvokeGetter(function_name, false));
+    if (getter_result.raw() != Object::sentinel().raw()) {
+      // Make room for the closure (receiver) in arguments.
+      intptr_t numArgs = args.Length();
+      const Array& call_args = Array::Handle(Array::New(numArgs + 1));
+      Object& temp = Object::Handle();
+      for (int i = 0; i < numArgs; i++) {
+        temp = args.At(i);
+        call_args.SetAt(i + 1, temp);
+      }
+      call_args.SetAt(0, getter_result);
+      const Array& call_args_descriptor_array =
+          Array::Handle(ArgumentsDescriptor::New(
+              kTypeArgsLen, call_args.Length(), arg_names));
+      // Call closure.
+      return DartEntry::InvokeClosure(call_args, call_args_descriptor_array);
+    }
+  }
+
+  const Array& args_descriptor_array = Array::Handle(
+      ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
+  ArgumentsDescriptor args_descriptor(args_descriptor_array);
+
+  if (function.IsNull() || !function.AreValidArguments(args_descriptor, NULL) ||
+      (respect_reflectable && !function.is_reflectable())) {
+    return ThrowNoSuchMethod(
+        AbstractType::Handle(Class::Handle(toplevel_class()).RareType()),
+        function_name, args, arg_names, InvocationMirror::kTopLevel,
+        InvocationMirror::kMethod);
+  }
+
+  return DartEntry::InvokeFunction(function, args, args_descriptor_array);
+}
+
 RawObject* Library::Evaluate(const String& expr,
                              const Array& param_names,
                              const Array& param_values) const {
@@ -11707,9 +12064,6 @@
       String::New("Expression evaluation not available in precompiled mode."));
   return ApiError::New(error_str);
 #else
-  Isolate* I = Isolate::Current();
-  Thread* T = Thread::Current();
-
   kernel::Program* kernel_pgm =
       kernel::Program::ReadFromBuffer(kernel_bytes, kernel_length);
 
@@ -11718,67 +12072,12 @@
         String::New("Kernel isolate returned ill-formed kernel.")));
   }
 
-  Function& callee = Function::Handle();
-  intptr_t num_cids = I->class_table()->NumCids();
-  GrowableObjectArray& libraries =
-      GrowableObjectArray::Handle(T->zone(), I->object_store()->libraries());
-  intptr_t num_libs = libraries.Length();
-
-  // Load the program with the debug procedure as a regular, independent
-  // program.
   kernel::KernelLoader loader(kernel_pgm);
-  const Object& result = Object::Handle(loader.LoadProgram());
+  const Object& result = Object::Handle(
+      loader.LoadExpressionEvaluationFunction(library_url, klass));
   if (result.IsError()) return result.raw();
-  ASSERT(I->class_table()->NumCids() > num_cids &&
-         libraries.Length() == num_libs + 1);
-  const Library& loaded =
-      Library::Handle(Library::LookupLibrary(T, Symbols::EvalSourceUri()));
-  ASSERT(!loaded.IsNull());
 
-  String& debug_name = String::Handle(
-      String::New(Symbols::Symbol(Symbols::kDebugProcedureNameId)));
-  Class& fake_class = Class::Handle();
-  if (!klass.IsNull()) {
-    fake_class = loaded.LookupClass(Symbols::DebugClassName());
-    ASSERT(!fake_class.IsNull());
-    callee = fake_class.LookupFunctionAllowPrivate(debug_name);
-  } else {
-    callee = loaded.LookupFunctionAllowPrivate(debug_name);
-  }
-  ASSERT(!callee.IsNull());
-
-  // Save the loaded library's kernel data to the generic "data" field of the
-  // callee, so it doesn't require access it's parent library during
-  // compilation.
-  callee.SetKernelDataAndScript(Script::Handle(callee.script()),
-                                ExternalTypedData::Handle(loaded.kernel_data()),
-                                loaded.kernel_offset());
-
-  // Reparent the callee to the real enclosing class so we can remove the fake
-  // class and library from the object store.
-  const Library& real_library =
-      Library::Handle(Library::LookupLibrary(T, library_url));
-  ASSERT(!real_library.IsNull());
-  Class& real_class = Class::Handle();
-  if (!klass.IsNull()) {
-    real_class = real_library.LookupClassAllowPrivate(klass);
-  } else {
-    real_class = real_library.toplevel_class();
-  }
-  ASSERT(!real_class.IsNull());
-
-  callee.set_owner(real_class);
-
-  // Unlink the fake library and class from the object store.
-  libraries.SetLength(num_libs);
-  I->class_table()->SetNumCids(num_cids);
-  if (!fake_class.IsNull()) {
-    fake_class.set_id(kIllegalCid);
-  }
-  LibraryLookupMap libraries_map(I->object_store()->libraries_map());
-  bool removed = libraries_map.Remove(Symbols::EvalSourceUri());
-  ASSERT(removed);
-  I->object_store()->set_libraries_map(libraries_map.Release());
+  const Function& callee = Function::Cast(result);
 
   if (type_definitions.Length() == 0) {
     return DartEntry::InvokeFunction(callee, arguments);
@@ -14097,7 +14396,7 @@
     ASSERT(target.HasCode());
     const Code& code = Code::Handle(target.CurrentCode());
     const Smi& entry_point =
-        Smi::Handle(Smi::FromAlignedAddress(code.UncheckedEntryPoint()));
+        Smi::Handle(Smi::FromAlignedAddress(code.EntryPoint()));
     data.SetAt(data_pos + 1, code);
     data.SetAt(data_pos + 2, entry_point);
   }
@@ -15208,7 +15507,7 @@
   const Object& obj = Object::Handle(zone, owner());
   if (obj.IsNull()) {
     // Regular stub.
-    const char* name = StubCode::NameOfStub(UncheckedEntryPoint());
+    const char* name = StubCode::NameOfStub(EntryPoint());
     if (name == NULL) {
       return zone->PrintToString("[this stub]");  // Not yet recorded.
     }
@@ -15288,9 +15587,9 @@
   // store buffer update is not needed here.
   StorePointer(&raw_ptr()->active_instructions_, instructions.raw());
   StoreNonPointer(&raw_ptr()->entry_point_,
-                  Instructions::UncheckedEntryPoint(instructions.raw()));
-  StoreNonPointer(&raw_ptr()->checked_entry_point_,
-                  Instructions::CheckedEntryPoint(instructions.raw()));
+                  Instructions::EntryPoint(instructions.raw()));
+  StoreNonPointer(&raw_ptr()->monomorphic_entry_point_,
+                  Instructions::MonomorphicEntryPoint(instructions.raw()));
 #endif
 }
 
@@ -15320,8 +15619,7 @@
   // the entry to an osr function. (In which case all stack slots are
   // considered to have tagged pointers.)
   // Running with --verify-on-transition should hit this.
-  ASSERT(!is_optimized() ||
-         (pc_offset == UncheckedEntryPoint() - PayloadStart()));
+  ASSERT(!is_optimized() || (pc_offset == EntryPoint() - PayloadStart()));
   return StackMap::null();
 }
 
@@ -16083,6 +16381,107 @@
   return "UnwindError";
 }
 
+RawObject* Instance::InvokeGetter(const String& getter_name,
+                                  bool respect_reflectable) const {
+  Zone* zone = Thread::Current()->zone();
+
+  Class& klass = Class::Handle(zone, clazz());
+
+  const String& internal_getter_name =
+      String::Handle(zone, Field::GetterName(getter_name));
+  Function& function = Function::Handle(
+      zone, Resolver::ResolveDynamicAnyArgs(zone, klass, internal_getter_name));
+
+  // Check for method extraction when method extractors are not created.
+  if (function.IsNull() && !FLAG_lazy_dispatchers) {
+    function = Resolver::ResolveDynamicAnyArgs(zone, klass, getter_name);
+    if (!function.IsNull()) {
+      const Function& closure_function =
+          Function::Handle(zone, function.ImplicitClosureFunction());
+      return closure_function.ImplicitInstanceClosure(*this);
+    }
+  }
+
+  const int kTypeArgsLen = 0;
+  const int kNumArgs = 1;
+  const Array& args = Array::Handle(zone, Array::New(kNumArgs));
+  args.SetAt(0, *this);
+  const Array& args_descriptor = Array::Handle(
+      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
+
+  return InvokeInstanceFunction(*this, function, internal_getter_name, args,
+                                args_descriptor, respect_reflectable);
+}
+
+RawObject* Instance::InvokeSetter(const String& setter_name,
+                                  const Instance& value,
+                                  bool respect_reflectable) const {
+  Zone* zone = Thread::Current()->zone();
+
+  const Class& klass = Class::Handle(zone, clazz());
+  const String& internal_setter_name =
+      String::Handle(zone, Field::SetterName(setter_name));
+  const Function& setter = Function::Handle(
+      zone, Resolver::ResolveDynamicAnyArgs(zone, klass, internal_setter_name));
+
+  const int kTypeArgsLen = 0;
+  const int kNumArgs = 2;
+  const Array& args = Array::Handle(zone, Array::New(kNumArgs));
+  args.SetAt(0, *this);
+  args.SetAt(1, value);
+  const Array& args_descriptor = Array::Handle(
+      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
+
+  return InvokeInstanceFunction(*this, setter, internal_setter_name, args,
+                                args_descriptor, respect_reflectable);
+}
+
+RawObject* Instance::Invoke(const String& function_name,
+                            const Array& args,
+                            const Array& arg_names,
+                            bool respect_reflectable) const {
+  Zone* zone = Thread::Current()->zone();
+  Class& klass = Class::Handle(zone, clazz());
+  Function& function = Function::Handle(
+      zone, Resolver::ResolveDynamicAnyArgs(zone, klass, function_name));
+
+  // TODO(regis): Support invocation of generic functions with type arguments.
+  const int kTypeArgsLen = 0;
+  const Array& args_descriptor = Array::Handle(
+      zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
+
+  if (function.IsNull()) {
+    // Didn't find a method: try to find a getter and invoke call on its result.
+    const String& getter_name =
+        String::Handle(zone, Field::GetterName(function_name));
+    function = Resolver::ResolveDynamicAnyArgs(zone, klass, getter_name);
+    if (!function.IsNull()) {
+      ASSERT(function.kind() != RawFunction::kMethodExtractor);
+      // Invoke the getter.
+      const int kNumArgs = 1;
+      const Array& getter_args = Array::Handle(zone, Array::New(kNumArgs));
+      getter_args.SetAt(0, *this);
+      const Array& getter_args_descriptor = Array::Handle(
+          zone, ArgumentsDescriptor::New(kTypeArgsLen, getter_args.Length()));
+      const Object& getter_result = Object::Handle(
+          zone,
+          InvokeInstanceFunction(*this, function, getter_name, getter_args,
+                                 getter_args_descriptor, respect_reflectable));
+      if (getter_result.IsError()) {
+        return getter_result.raw();
+      }
+      // Replace the closure as the receiver in the arguments list.
+      args.SetAt(0, getter_result);
+      // Call the closure.
+      return DartEntry::InvokeClosure(args, args_descriptor);
+    }
+  }
+
+  // Found an ordinary method.
+  return InvokeInstanceFunction(*this, function, function_name, args,
+                                args_descriptor, respect_reflectable);
+}
+
 RawObject* Instance::Evaluate(const Class& method_cls,
                               const String& expr,
                               const Array& param_names,
@@ -17469,7 +17868,7 @@
     StoreNonPointer(&raw_ptr()->type_test_stub_entry_point_, 0);
   } else {
     StoreNonPointer(&raw_ptr()->type_test_stub_entry_point_,
-                    instr.UncheckedEntryPoint());
+                    instr.EntryPoint());
   }
 }
 
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 7635773..f05ca7f 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -1374,6 +1374,17 @@
   // Return true on success, or false and error otherwise.
   bool ApplyPatch(const Class& patch, Error* error) const;
 
+  RawObject* Invoke(const String& selector,
+                    const Array& arguments,
+                    const Array& argument_names,
+                    bool respect_reflectable = true) const;
+  RawObject* InvokeGetter(const String& selector,
+                          bool throw_nsm_if_absent,
+                          bool respect_reflectable = true) const;
+  RawObject* InvokeSetter(const String& selector,
+                          const Instance& argument,
+                          bool respect_reflectable = true) const;
+
   // Evaluate the given expression as if it appeared in a static method of this
   // class and return the resulting value, or an error object if evaluating the
   // expression fails. The method has the formal (type) parameters given in
@@ -1404,7 +1415,8 @@
   static RawClass* New(const Library& lib,
                        const String& name,
                        const Script& script,
-                       TokenPosition token_pos);
+                       TokenPosition token_pos,
+                       bool register_class = true);
   static RawClass* NewNativeWrapper(const Library& library,
                                     const String& name,
                                     int num_fields);
@@ -2106,6 +2118,7 @@
 
   FINAL_HEAP_OBJECT_IMPLEMENTATION(ICData, Object);
   friend class Class;
+  friend class Interpreter;
   friend class SnapshotWriter;
   friend class Serializer;
   friend class Deserializer;
@@ -3807,6 +3820,17 @@
 
   static RawLibrary* New(const String& url);
 
+  RawObject* Invoke(const String& selector,
+                    const Array& arguments,
+                    const Array& argument_names,
+                    bool respect_reflectable = true) const;
+  RawObject* InvokeGetter(const String& selector,
+                          bool throw_nsm_if_absent,
+                          bool respect_reflectable = true) const;
+  RawObject* InvokeSetter(const String& selector,
+                          const Instance& argument,
+                          bool respect_reflectable = true) const;
+
   // Evaluate the given expression as if it appeared in an top-level method of
   // this library and return the resulting value, or an error object if
   // evaluating the expression fails. The method has the formal (type)
@@ -3842,6 +3866,7 @@
   RawObject* LookupObjectAllowPrivate(const String& name) const;
   RawObject* LookupLocalObjectAllowPrivate(const String& name) const;
   RawObject* LookupLocalObject(const String& name) const;
+  RawObject* LookupLocalOrReExportObject(const String& name) const;
   RawObject* LookupImportedObject(const String& name) const;
   RawClass* LookupClass(const String& name) const;
   RawClass* LookupClassAllowPrivate(const String& name) const;
@@ -4317,8 +4342,8 @@
   }
 
   uword PayloadStart() const { return PayloadStart(raw()); }
-  uword CheckedEntryPoint() const { return CheckedEntryPoint(raw()); }
-  uword UncheckedEntryPoint() const { return UncheckedEntryPoint(raw()); }
+  uword MonomorphicEntryPoint() const { return MonomorphicEntryPoint(raw()); }
+  uword EntryPoint() const { return EntryPoint(raw()); }
   static uword PayloadStart(const RawInstructions* instr) {
     return reinterpret_cast<uword>(instr->ptr()) + HeaderSize();
   }
@@ -4342,14 +4367,14 @@
 #error Missing entry offsets for current architecture
 #endif
 
-  static uword CheckedEntryPoint(const RawInstructions* instr) {
+  static uword MonomorphicEntryPoint(const RawInstructions* instr) {
     uword entry = PayloadStart(instr);
     if (!HasSingleEntryPoint(instr)) {
       entry += kCheckedEntryOffset;
     }
     return entry;
   }
-  static uword UncheckedEntryPoint(const RawInstructions* instr) {
+  static uword EntryPoint(const RawInstructions* instr) {
     uword entry = PayloadStart(instr);
     if (!HasSingleEntryPoint(instr)) {
       entry += kUncheckedEntryOffset;
@@ -4797,8 +4822,8 @@
   static intptr_t entry_point_offset() {
     return OFFSET_OF(RawCode, entry_point_);
   }
-  static intptr_t checked_entry_point_offset() {
-    return OFFSET_OF(RawCode, checked_entry_point_);
+  static intptr_t monomorphic_entry_point_offset() {
+    return OFFSET_OF(RawCode, monomorphic_entry_point_);
   }
 
   RawObjectPool* object_pool() const { return raw_ptr()->object_pool_; }
@@ -4820,13 +4845,13 @@
   uword PayloadStart() const {
     return Instructions::PayloadStart(instructions());
   }
-  uword UncheckedEntryPoint() const {
+  uword EntryPoint() const {
     const Instructions& instr = Instructions::Handle(instructions());
-    return instr.UncheckedEntryPoint();
+    return instr.EntryPoint();
   }
-  uword CheckedEntryPoint() const {
+  uword MonomorphicEntryPoint() const {
     const Instructions& instr = Instructions::Handle(instructions());
-    return instr.CheckedEntryPoint();
+    return instr.MonomorphicEntryPoint();
   }
   intptr_t Size() const { return Instructions::Size(instructions()); }
   RawObjectPool* GetObjectPool() const { return object_pool(); }
@@ -5702,6 +5727,16 @@
   // (if not NULL) to call.
   bool IsCallable(Function* function) const;
 
+  RawObject* Invoke(const String& selector,
+                    const Array& arguments,
+                    const Array& argument_names,
+                    bool respect_reflectable = true) const;
+  RawObject* InvokeGetter(const String& selector,
+                          bool respect_reflectable = true) const;
+  RawObject* InvokeSetter(const String& selector,
+                          const Instance& argument,
+                          bool respect_reflectable = true) const;
+
   // Evaluate the given expression as if it appeared in an instance method of
   // this instance and return the resulting value, or an error object if
   // evaluating the expression fails. The method has the formal (type)
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 59e3b05..ba4587d 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1255,7 +1255,11 @@
   RAW_HEAP_OBJECT_IMPLEMENTATION(Code);
 
   uword entry_point_;          // Accessed from generated code.
-  uword checked_entry_point_;  // Accessed from generated code (AOT only).
+
+  // In AOT this entry-point supports switchable calls. It checks the type of
+  // the receiver on entry to the function and calls a stub to patch up the
+  // caller if they mismatch.
+  uword monomorphic_entry_point_;  // Accessed from generated code (AOT only).
 
   VISIT_FROM(RawObject*, object_pool_);
   RawObjectPool* object_pool_;     // Accessed from generated code.
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index 96d88cd..c7b3412 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -1052,7 +1052,7 @@
               ""
               " to '%s' new entry point %#" Px " (%s)\n",
               caller_frame->pc(), target_function.ToFullyQualifiedCString(),
-              target_code.UncheckedEntryPoint(),
+              target_code.EntryPoint(),
               target_code.is_optimized() ? "optimized" : "unoptimized");
   }
   arguments.SetReturn(target_code);
@@ -1605,7 +1605,7 @@
           SingleTargetCache::Handle(SingleTargetCache::New());
       const Code& code = Code::Handle(target_function.CurrentCode());
       cache.set_target(code);
-      cache.set_entry_point(code.UncheckedEntryPoint());
+      cache.set_entry_point(code.EntryPoint());
       cache.set_lower_limit(lower);
       cache.set_upper_limit(upper);
       const Code& stub =
@@ -2061,8 +2061,7 @@
 
   if (!result.IsNull()) {
     const Code& code = Code::Cast(result);
-    uword optimized_entry =
-        Instructions::UncheckedEntryPoint(code.instructions());
+    uword optimized_entry = Instructions::EntryPoint(code.instructions());
     frame->set_pc(optimized_entry);
     frame->set_pc_marker(code.raw());
   }
@@ -2242,7 +2241,7 @@
                  " "
                  "target '%s' -> %#" Px "\n",
                  frame->pc(), target_function.ToFullyQualifiedCString(),
-                 current_target_code.UncheckedEntryPoint());
+                 current_target_code.EntryPoint());
   }
   ASSERT(!current_target_code.IsDisabled());
   arguments.SetReturn(current_target_code);
@@ -2285,8 +2284,7 @@
     OS::PrintErr("FixAllocationStubTarget: caller %#" Px
                  " alloc-class %s "
                  " -> %#" Px "\n",
-                 frame->pc(), alloc_class.ToCString(),
-                 alloc_stub.UncheckedEntryPoint());
+                 frame->pc(), alloc_class.ToCString(), alloc_stub.EntryPoint());
   }
   arguments.SetReturn(alloc_stub);
 #else
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 85d37ee..8351e9f 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -2249,6 +2249,132 @@
   return true;
 }
 
+static const MethodParameter* invoke_params[] = {
+    RUNNABLE_ISOLATE_PARAMETER,
+    NULL,
+};
+
+static bool Invoke(Thread* thread, JSONStream* js) {
+  if (CheckDebuggerDisabled(thread, js)) {
+    return true;
+  }
+
+  const char* receiver_id = js->LookupParam("receiverId");
+  if (receiver_id == NULL) {
+    PrintMissingParamError(js, "receiverId");
+    return true;
+  }
+  const char* selector_cstr = js->LookupParam("selector");
+  if (selector_cstr == NULL) {
+    PrintMissingParamError(js, "selector");
+    return true;
+  }
+  const char* argument_ids = js->LookupParam("argumentIds");
+  if (argument_ids == NULL) {
+    PrintMissingParamError(js, "argumentIds");
+    return true;
+  }
+
+  Zone* zone = thread->zone();
+  ObjectIdRing::LookupResult lookup_result;
+  Object& receiver = Object::Handle(
+      zone, LookupHeapObject(thread, receiver_id, &lookup_result));
+  if (receiver.raw() == Object::sentinel().raw()) {
+    if (lookup_result == ObjectIdRing::kCollected) {
+      PrintSentinel(js, kCollectedSentinel);
+    } else if (lookup_result == ObjectIdRing::kExpired) {
+      PrintSentinel(js, kExpiredSentinel);
+    } else {
+      PrintInvalidParamError(js, "receiverId");
+    }
+    return true;
+  }
+
+  const GrowableObjectArray& growable_args =
+      GrowableObjectArray::Handle(zone, GrowableObjectArray::New());
+
+  bool is_instance = (receiver.IsInstance() || receiver.IsNull()) &&
+                     !ContainsNonInstance(receiver);
+  if (is_instance) {
+    growable_args.Add(receiver);
+  }
+
+  intptr_t n = strlen(argument_ids);
+  if ((n < 2) || (argument_ids[0] != '[') || (argument_ids[n - 1] != ']')) {
+    PrintInvalidParamError(js, "argumentIds");
+    return true;
+  }
+  if (n > 2) {
+    intptr_t start = 1;
+    while (start < n) {
+      intptr_t end = start;
+      while ((argument_ids[end + 1] != ',') && (argument_ids[end + 1] != ']')) {
+        end++;
+      }
+      if (end == start) {
+        // Empty element.
+        PrintInvalidParamError(js, "argumentIds");
+        return true;
+      }
+
+      const char* argument_id =
+          zone->MakeCopyOfStringN(&argument_ids[start], end - start + 1);
+
+      ObjectIdRing::LookupResult lookup_result;
+      Object& argument = Object::Handle(
+          zone, LookupHeapObject(thread, argument_id, &lookup_result));
+      if (argument.raw() == Object::sentinel().raw()) {
+        if (lookup_result == ObjectIdRing::kCollected) {
+          PrintSentinel(js, kCollectedSentinel);
+        } else if (lookup_result == ObjectIdRing::kExpired) {
+          PrintSentinel(js, kExpiredSentinel);
+        } else {
+          PrintInvalidParamError(js, "argumentIds");
+        }
+        return true;
+      }
+      growable_args.Add(argument);
+
+      start = end + 3;
+    }
+  }
+
+  const String& selector = String::Handle(zone, String::New(selector_cstr));
+  const Array& args =
+      Array::Handle(zone, Array::MakeFixedLength(growable_args));
+  const Array& arg_names = Object::empty_array();
+
+  if (receiver.IsLibrary()) {
+    const Library& lib = Library::Cast(receiver);
+    const Object& result =
+        Object::Handle(zone, lib.Invoke(selector, args, arg_names));
+    result.PrintJSON(js, true);
+    return true;
+  }
+  if (receiver.IsClass()) {
+    const Class& cls = Class::Cast(receiver);
+    const Object& result =
+        Object::Handle(zone, cls.Invoke(selector, args, arg_names));
+    result.PrintJSON(js, true);
+    return true;
+  }
+  if (is_instance) {
+    // We don't use Instance::Cast here because it doesn't allow null.
+    Instance& instance = Instance::Handle(zone);
+    instance ^= receiver.raw();
+
+    const Object& result =
+        Object::Handle(zone, instance.Invoke(selector, args, arg_names));
+    result.PrintJSON(js, true);
+    return true;
+  }
+  js->PrintError(kInvalidParams,
+                 "%s: invalid 'receiverId' parameter: "
+                 "Cannot invoke against a VM-internal object",
+                 js->method());
+  return true;
+}
+
 static const MethodParameter* evaluate_params[] = {
     RUNNABLE_ISOLATE_PARAMETER, NULL,
 };
@@ -4729,6 +4855,7 @@
     get_vm_timeline_params },
   { "_getVMTimelineFlags", GetVMTimelineFlags,
     get_vm_timeline_flags_params },
+  { "invoke", Invoke, invoke_params },
   { "kill", Kill, kill_params },
   { "pause", Pause,
     pause_params },
diff --git a/runtime/vm/service.h b/runtime/vm/service.h
index 6edc8f2..46e03de 100644
--- a/runtime/vm/service.h
+++ b/runtime/vm/service.h
@@ -15,7 +15,7 @@
 namespace dart {
 
 #define SERVICE_PROTOCOL_MAJOR_VERSION 3
-#define SERVICE_PROTOCOL_MINOR_VERSION 9
+#define SERVICE_PROTOCOL_MINOR_VERSION 10
 
 class Array;
 class EmbedderServiceHandler;
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index baa0df8..2810f99 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -470,6 +470,40 @@
 
 Note that breakpoints are added and removed on a per-isolate basis.
 
+### invoke
+
+```
+@Instance|@Error|Sentinel invoke(string isolateId,
+                                 string targetId,
+                                 string selector,
+                                 string[] argumentIds)
+```
+
+The _invoke_ RPC is used to perform regular method invocation on some receiver,
+as if by dart:mirror's ObjectMirror.invoke. Note this does not provide a way to
+perform getter, setter or constructor invocation.
+
+_targetId_ may refer to a [Library](#library), [Class](#class), or
+[Instance](#instance).
+
+Each elements of _argumentId_ may refer to an [Instance](#instance).
+
+If _targetId_ or any element of _argumentIds_ is a temporary id which has
+expired, then the _Expired_ [Sentinel](#sentinel) is returned.
+
+If _targetId_ or any element of _argumentIds_ refers to an object which has been
+collected by the VM's garbage collector, then the _Collected_
+[Sentinel](#sentinel) is returned.
+
+If invocation triggers a failed compilation then [rpc error](#rpc-error) 113
+"Expression compilation error" is returned.
+
+If an runtime error occurs while evaluating the invocation, an [@Error](#error)
+reference will be returned.
+
+If the invocation is evaluated successfully, an [@Instance](#instance)
+reference will be returned.
+
 ### evaluate
 
 ```
@@ -2670,5 +2704,8 @@
 3.5 | Add the error field to SourceReportRange.  Clarify definition of token position.  Add "Isolate must be paused" error code.
 3.6 | Add 'scopeStartTokenPos', 'scopeEndTokenPos', and 'declarationTokenPos' to BoundVariable. Add 'PausePostRequest' event kind. Add 'Rewind' StepOption. Add error code 107 (isolate cannot resume). Add 'reloadSources' RPC and related error codes. Add optional parameter 'scope' to 'evaluate' and 'evaluateInFrame'.
 3.7 | Add 'setFlag'.
+3.8 | Add 'kill'.
+3.9 | Changed numbers for errors related to service extensions.
+3.10 | Add 'invoke'.
 
 [discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observatory-discuss
diff --git a/runtime/vm/service/service_dev.md b/runtime/vm/service/service_dev.md
index b4bc314..3649b6c 100644
--- a/runtime/vm/service/service_dev.md
+++ b/runtime/vm/service/service_dev.md
@@ -470,6 +470,40 @@
 
 Note that breakpoints are added and removed on a per-isolate basis.
 
+### invoke
+
+```
+@Instance|@Error|Sentinel invoke(string isolateId,
+                                 string targetId,
+                                 string selector,
+                                 string[] argumentIds)
+```
+
+The _invoke_ RPC is used to perform regular method invocation on some receiver,
+as if by dart:mirror's ObjectMirror.invoke. Note this does not provide a way to
+perform getter, setter or constructor invocation.
+
+_targetId_ may refer to a [Library](#library), [Class](#class), or
+[Instance](#instance).
+
+Each elements of _argumentId_ may refer to an [Instance](#instance).
+
+If _targetId_ or any element of _argumentIds_ is a temporary id which has
+expired, then the _Expired_ [Sentinel](#sentinel) is returned.
+
+If _targetId_ or any element of _argumentIds_ refers to an object which has been
+collected by the VM's garbage collector, then the _Collected_
+[Sentinel](#sentinel) is returned.
+
+If invocation triggers a failed compilation then [rpc error](#rpc-error) 113
+"Expression compilation error" is returned.
+
+If an runtime error occurs while evaluating the invocation, an [@Error](#error)
+reference will be returned.
+
+If the invocation is evaluated successfully, an [@Instance](#instance)
+reference will be returned.
+
 ### evaluate
 
 ```
@@ -2670,5 +2704,8 @@
 3.5 | Add the error field to SourceReportRange.  Clarify definition of token position.  Add "Isolate must be paused" error code.
 3.6 | Add 'scopeStartTokenPos', 'scopeEndTokenPos', and 'declarationTokenPos' to BoundVariable. Add 'PausePostRequest' event kind. Add 'Rewind' StepOption. Add error code 107 (isolate cannot resume). Add 'reloadSources' RPC and related error codes. Add optional parameter 'scope' to 'evaluate' and 'evaluateInFrame'.
 3.7 | Add 'setFlag'.
+3.8 | Add 'kill'.
+3.9 | Changed numbers for errors related to service extensions.
+3.10 | Add 'invoke'.
 
 [discuss-list]: https://groups.google.com/a/dartlang.org/forum/#!forum/observatory-discuss
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index 940b83c..0a6d92b 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -92,11 +92,15 @@
 }
 
 void ExitFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
-  // Visit pc marker and saved pool pointer.
-  RawObject** last_fixed =
-      reinterpret_cast<RawObject**>(fp()) + kFirstObjectSlotFromFp;
-  RawObject** first_fixed =
-      reinterpret_cast<RawObject**>(fp()) + kLastFixedObjectSlotFromFp;
+  ASSERT(visitor != NULL);
+  // Visit pc marker and saved pool pointer, or, for interpreted frame, code
+  // object and function object.
+  RawObject** last_fixed = reinterpret_cast<RawObject**>(fp()) +
+                           (is_interpreted() ? kKBCLastFixedObjectSlotFromFp
+                                             : kFirstObjectSlotFromFp);
+  RawObject** first_fixed = reinterpret_cast<RawObject**>(fp()) +
+                            (is_interpreted() ? kKBCFirstObjectSlotFromFp
+                                              : kLastFixedObjectSlotFromFp);
 #if !defined(TARGET_ARCH_DBC)
   ASSERT(first_fixed <= last_fixed);
   visitor->VisitPointers(first_fixed, last_fixed);
@@ -107,17 +111,22 @@
 }
 
 void EntryFrame::VisitObjectPointers(ObjectPointerVisitor* visitor) {
-  // Visit objects between SP and (FP - callee_save_area).
   ASSERT(visitor != NULL);
+  // Visit objects between SP and (FP - callee_save_area).
 #if !defined(TARGET_ARCH_DBC)
-  RawObject** first = reinterpret_cast<RawObject**>(sp());
-  RawObject** last = reinterpret_cast<RawObject**>(
-      fp() + (kExitLinkSlotFromEntryFp - 1) * kWordSize);
+  RawObject** first = is_interpreted() ? reinterpret_cast<RawObject**>(fp()) +
+                                             kKBCSavedArgDescSlotFromEntryFp
+                                       : reinterpret_cast<RawObject**>(sp());
+  RawObject** last = is_interpreted() ? reinterpret_cast<RawObject**>(sp())
+                                      : reinterpret_cast<RawObject**>(fp()) +
+                                            kExitLinkSlotFromEntryFp - 1;
+  // There may not be any pointer to visit; in this case, first > last.
   visitor->VisitPointers(first, last);
 #else
   // On DBC stack is growing upwards which implies fp() <= sp().
   RawObject** first = reinterpret_cast<RawObject**>(fp());
   RawObject** last = reinterpret_cast<RawObject**>(sp());
+  ASSERT(first <= last);
   visitor->VisitPointers(first, last);
 #endif
 }
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 2cbab48..de288dc 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -28,10 +28,10 @@
 
 StubEntry::StubEntry(const Code& code)
     : code_(code.raw()),
-      entry_point_(code.UncheckedEntryPoint()),
-      checked_entry_point_(code.CheckedEntryPoint()),
+      entry_point_(code.EntryPoint()),
+      monomorphic_entry_point_(code.MonomorphicEntryPoint()),
       size_(code.Size()),
-      label_(code.UncheckedEntryPoint()) {}
+      label_(code.EntryPoint()) {}
 
 // Visit all object pointers.
 void StubEntry::VisitObjectPointers(ObjectPointerVisitor* visitor) {
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index bde424b..6e3b534 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -122,7 +122,7 @@
 
   const ExternalLabel& label() const { return label_; }
   uword EntryPoint() const { return entry_point_; }
-  uword CheckedEntryPoint() const { return checked_entry_point_; }
+  uword MonomorphicEntryPoint() const { return monomorphic_entry_point_; }
   RawCode* code() const { return code_; }
   intptr_t Size() const { return size_; }
 
@@ -132,7 +132,7 @@
  private:
   RawCode* code_;
   uword entry_point_;
-  uword checked_entry_point_;
+  uword monomorphic_entry_point_;
   intptr_t size_;
   ExternalLabel label_;
 
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 6a0a2ed..8febb63 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -2606,7 +2606,7 @@
   __ LeaveStubFrame();
 
   __ ldr(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ ldr(R1, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(R1, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ bx(R1);
 }
 
@@ -2645,7 +2645,7 @@
   __ LeaveStubFrame();
 
   __ ldr(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ ldr(R1, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(R1, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ bx(R1);
 }
 
@@ -2667,7 +2667,7 @@
   __ LeaveStubFrame();
 
   __ ldr(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ ldr(R1, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(R1, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ bx(R1);
 }
 
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index 81d1bb8..4310cc7 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -2845,7 +2845,7 @@
   __ LeaveStubFrame();
 
   __ ldr(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ ldr(R1, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(R1, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ br(R1);
 }
 
@@ -2885,7 +2885,7 @@
   __ LeaveStubFrame();
 
   __ ldr(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ ldr(R1, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(R1, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ br(R1);
 }
 
@@ -2906,7 +2906,7 @@
   __ LeaveStubFrame();
 
   __ ldr(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ ldr(R1, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ ldr(R1, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ br(R1);
 }
 
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index bb6865a..12d6446 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -2787,7 +2787,7 @@
   __ LeaveStubFrame();
 
   __ movq(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ movq(RCX, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ movq(RCX, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ jmp(RCX);
 }
 
@@ -2823,7 +2823,7 @@
   __ LeaveStubFrame();
 
   __ movq(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ movq(RCX, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ movq(RCX, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ jmp(RCX);
 }
 
@@ -2844,7 +2844,7 @@
   __ LeaveStubFrame();
 
   __ movq(CODE_REG, Address(THR, Thread::ic_lookup_through_code_stub_offset()));
-  __ movq(RCX, FieldAddress(CODE_REG, Code::checked_entry_point_offset()));
+  __ movq(RCX, FieldAddress(CODE_REG, Code::monomorphic_entry_point_offset()));
   __ jmp(RCX);
 }
 
diff --git a/runtime/vm/type_testing_stubs.cc b/runtime/vm/type_testing_stubs.cc
index e27cffb..3f0e4a1 100644
--- a/runtime/vm/type_testing_stubs.cc
+++ b/runtime/vm/type_testing_stubs.cc
@@ -201,23 +201,23 @@
     uword entry_point) const {
   // First test the 4 common ones:
   code_ = StubCode::DefaultTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return code_.instructions();
   }
   code_ = StubCode::LazySpecializeTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return code_.instructions();
   }
   code_ = StubCode::TopTypeTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return code_.instructions();
   }
   code_ = StubCode::TypeRefTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return code_.instructions();
   }
   code_ = StubCode::UnreachableTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return code_.instructions();
   }
 
@@ -229,23 +229,23 @@
     uword entry_point) const {
   // First test the 4 common ones:
   code_ = StubCode::DefaultTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return "TypeTestingStub_Default";
   }
   code_ = StubCode::LazySpecializeTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return "TypeTestingStub_LazySpecialize";
   }
   code_ = StubCode::TopTypeTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return "TypeTestingStub_Top";
   }
   code_ = StubCode::TypeRefTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return "TypeTestingStub_Ref";
   }
   code_ = StubCode::UnreachableTypeTest_entry()->code();
-  if (entry_point == code_.UncheckedEntryPoint()) {
+  if (entry_point == code_.EntryPoint()) {
     return "TypeTestingStub_Unreachable";
   }
 
@@ -291,7 +291,7 @@
     }
 
     uword Value(intptr_t i) {
-      return Instructions::UncheckedEntryPoint(
+      return Instructions::EntryPoint(
           Instructions::RawCast(array_.At(2 * i + 1)));
     }
 
@@ -311,7 +311,7 @@
   while (left <= right) {
     const intptr_t mid = left + (right - left) / 2;
     RawInstructions* instr = Instructions::RawCast(array_.At(2 * mid + 1));
-    const uword mid_value = Instructions::UncheckedEntryPoint(instr);
+    const uword mid_value = Instructions::EntryPoint(instr);
 
     if (entry_point < mid_value) {
       right = mid - 1;
diff --git a/runtime/vm/unit_test.h b/runtime/vm/unit_test.h
index 7f41d26..928489f 100644
--- a/runtime/vm/unit_test.h
+++ b/runtime/vm/unit_test.h
@@ -479,7 +479,7 @@
 
   uword payload_start() const { return code_.PayloadStart(); }
   uword payload_size() const { return assembler_->CodeSize(); }
-  uword entry() const { return code_.UncheckedEntryPoint(); }
+  uword entry() const { return code_.EntryPoint(); }
 
 // Invoke/InvokeWithCodeAndThread is used to call assembler test functions
 // using the ABI calling convention.
diff --git a/sdk/lib/_http/http.dart b/sdk/lib/_http/http.dart
index 691f152..29e785b 100644
--- a/sdk/lib/_http/http.dart
+++ b/sdk/lib/_http/http.dart
@@ -1761,9 +1761,16 @@
    * [addCredentials] before completing the [Future] with the value
    * [:true:].
    *
-   * If the [Future] completes with true the request will be retried
-   * using the updated credentials. Otherwise response processing will
+   * If the [Future] completes with [:true:] the request will be retried
+   * using the updated credentials, however, the retried request will not
+   * carry the original request payload. Otherwise response processing will
    * continue normally.
+   *
+   * If it is known that the remote server requires authentication for all
+   * requests, it is advisable to use [addCredentials] directly, or manually
+   * set the `'authorization'` header on the request to avoid the overhead
+   * of a failed request, or issues due to missing request payload on retried
+   * request.
    */
   set authenticate(Future<bool> f(Uri url, String scheme, String realm));
 
diff --git a/sdk/lib/_http/http_headers.dart b/sdk/lib/_http/http_headers.dart
index bb607ba..ea5eaff 100644
--- a/sdk/lib/_http/http_headers.dart
+++ b/sdk/lib/_http/http_headers.dart
@@ -957,7 +957,7 @@
   }
 
   void _validate() {
-    const SEPERATORS = const [
+    const separators = const [
       "(",
       ")",
       "<",
@@ -980,11 +980,15 @@
       int codeUnit = name.codeUnits[i];
       if (codeUnit <= 32 ||
           codeUnit >= 127 ||
-          SEPERATORS.indexOf(name[i]) >= 0) {
+          separators.indexOf(name[i]) >= 0) {
         throw new FormatException(
             "Invalid character in cookie name, code unit: '$codeUnit'");
       }
     }
+
+    if (value[0] == '"' && value[value.length - 1] == '"') {
+      value = value.substring(1, value.length - 1);
+    }
     for (int i = 0; i < value.length; i++) {
       int codeUnit = value.codeUnits[i];
       if (!(codeUnit == 0x21 ||
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index f656680..e1f8946 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -377,171 +377,6 @@
     }
     return new ConstantMapView<Symbol, dynamic>(map);
   }
-
-  _getCachedInvocation(Object object) {
-    var interceptor = getInterceptor(object);
-    var receiver = object;
-    var name = _internalName;
-    var arguments = _arguments;
-    var interceptedNames = JS_EMBEDDED_GLOBAL('', INTERCEPTED_NAMES);
-    bool isIntercepted = JS('bool',
-        'Object.prototype.hasOwnProperty.call(#, #)', interceptedNames, name);
-    if (isIntercepted) {
-      receiver = interceptor;
-      if (JS('bool', '# === #', object, interceptor)) {
-        interceptor = null;
-      }
-    } else {
-      interceptor = null;
-    }
-    bool isCatchAll = false;
-    var method = JS('var', '#[#]', receiver, name);
-    if (JS('bool', 'typeof # != "function"', method)) {
-      String baseName = _symbol_dev.Symbol.getName(memberName);
-      method = JS('', '#[# + "*"]', receiver, baseName);
-      if (method == null) {
-        interceptor = getInterceptor(object);
-        method = JS('', '#[# + "*"]', interceptor, baseName);
-        if (method != null) {
-          isIntercepted = true;
-          receiver = interceptor;
-        } else {
-          interceptor = null;
-        }
-      }
-      isCatchAll = true;
-    }
-    if (JS('bool', 'typeof # == "function"', method)) {
-      if (isCatchAll) {
-        return new CachedCatchAllInvocation(
-            name, method, isIntercepted, interceptor);
-      } else {
-        return new CachedInvocation(name, method, isIntercepted, interceptor);
-      }
-    } else {
-      // In this case, receiver doesn't implement name.  So we should
-      // invoke noSuchMethod instead (which will often throw a
-      // NoSuchMethodError).
-      return new CachedNoSuchMethodInvocation(interceptor);
-    }
-  }
-
-  /// This method is called by [InstanceMirror.delegate].
-  static invokeFromMirror(JSInvocationMirror invocation, Object victim) {
-    var cached = invocation._getCachedInvocation(victim);
-    if (cached.isNoSuchMethod) {
-      return cached.invokeOn(victim, invocation);
-    } else {
-      return cached.invokeOn(victim, invocation._arguments);
-    }
-  }
-
-  static getCachedInvocation(JSInvocationMirror invocation, Object victim) {
-    return invocation._getCachedInvocation(victim);
-  }
-}
-
-class CachedInvocation {
-  // The mangled name of this invocation.
-  String mangledName;
-
-  /// The JS function to call.
-  var jsFunction;
-
-  /// True if this is an intercepted call.
-  bool isIntercepted;
-
-  /// Non-null interceptor if this is an intercepted call through an
-  /// [Interceptor].
-  Interceptor cachedInterceptor;
-
-  CachedInvocation(this.mangledName, this.jsFunction, this.isIntercepted,
-      this.cachedInterceptor);
-
-  bool get isNoSuchMethod => false;
-  bool get isGetterStub => JS('bool', '!!#.\$getterStub', jsFunction);
-
-  /// Applies [jsFunction] to [victim] with [arguments].
-  /// Users of this class must take care to check the arguments first.
-  invokeOn(Object victim, List arguments) {
-    var receiver = victim;
-    if (!isIntercepted) {
-      if (arguments is! JSArray) arguments = new List.from(arguments);
-    } else {
-      arguments = [victim]..addAll(arguments);
-      if (cachedInterceptor != null) receiver = cachedInterceptor;
-    }
-    return JS('var', '#.apply(#, #)', jsFunction, receiver, arguments);
-  }
-}
-
-class CachedCatchAllInvocation extends CachedInvocation {
-  final ReflectionInfo info;
-
-  CachedCatchAllInvocation(String name, jsFunction, bool isIntercepted,
-      Interceptor cachedInterceptor)
-      : info = new ReflectionInfo(jsFunction),
-        super(name, jsFunction, isIntercepted, cachedInterceptor);
-
-  bool get isGetterStub => false;
-
-  invokeOn(Object victim, List arguments) {
-    var receiver = victim;
-    int providedArgumentCount;
-    int fullParameterCount =
-        info.requiredParameterCount + info.optionalParameterCount;
-    if (!isIntercepted) {
-      if (arguments is JSArray) {
-        providedArgumentCount = arguments.length;
-        // If we need to add extra arguments before calling, we have
-        // to copy the arguments array.
-        if (providedArgumentCount < fullParameterCount) {
-          arguments = new List.from(arguments);
-        }
-      } else {
-        arguments = new List.from(arguments);
-        providedArgumentCount = arguments.length;
-      }
-    } else {
-      arguments = [victim]..addAll(arguments);
-      if (cachedInterceptor != null) receiver = cachedInterceptor;
-      providedArgumentCount = arguments.length - 1;
-    }
-    if (info.areOptionalParametersNamed &&
-        (providedArgumentCount > info.requiredParameterCount)) {
-      throw new UnimplementedNoSuchMethodError(
-          "Invocation of unstubbed method '${info.reflectionName}'"
-          " with ${arguments.length} arguments.");
-    } else if (providedArgumentCount < info.requiredParameterCount) {
-      throw new UnimplementedNoSuchMethodError(
-          "Invocation of unstubbed method '${info.reflectionName}'"
-          " with $providedArgumentCount arguments (too few).");
-    } else if (providedArgumentCount > fullParameterCount) {
-      throw new UnimplementedNoSuchMethodError(
-          "Invocation of unstubbed method '${info.reflectionName}'"
-          " with $providedArgumentCount arguments (too many).");
-    }
-    for (int i = providedArgumentCount; i < fullParameterCount; i++) {
-      arguments.add(getMetadata(info.defaultValue(i)));
-    }
-    return JS('var', '#.apply(#, #)', jsFunction, receiver, arguments);
-  }
-}
-
-class CachedNoSuchMethodInvocation {
-  /// Non-null interceptor if this is an intercepted call through an
-  /// [Interceptor].
-  var interceptor;
-
-  CachedNoSuchMethodInvocation(this.interceptor);
-
-  bool get isNoSuchMethod => true;
-  bool get isGetterStub => false;
-
-  invokeOn(Object victim, Invocation invocation) {
-    var receiver = (interceptor == null) ? victim : interceptor;
-    return receiver.noSuchMethod(invocation);
-  }
 }
 
 class ReflectionInfo {
diff --git a/sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart b/sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart
index 284232a..bc10677 100644
--- a/sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart
+++ b/sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart
@@ -65,11 +65,6 @@
 /// runtime-type-information (rti) object.
 const GET_TYPE_FROM_NAME = 'getTypeFromName';
 
-/// If [JSInvocationMirror._invokeOn] is being used, this embedded global
-/// contains a JavaScript map with the names of methods that are
-/// intercepted.
-const INTERCEPTED_NAMES = 'interceptedNames';
-
 /// A JS map from mangled global names to their unmangled names.
 ///
 /// If the program does not use reflection, this embedded global may be empty
diff --git a/sdk/lib/core/bool.dart b/sdk/lib/core/bool.dart
index 6660b76..6dfdb74 100644
--- a/sdk/lib/core/bool.dart
+++ b/sdk/lib/core/bool.dart
@@ -11,6 +11,7 @@
  * It is a compile-time error for a class to attempt to extend or implement
  * bool.
  */
+@pragma("vm.entry-point")
 class bool {
   /**
    * Returns the boolean value of the environment declaration [name].
diff --git a/sdk/lib/core/null.dart b/sdk/lib/core/null.dart
index f408dc2..bf955a5 100644
--- a/sdk/lib/core/null.dart
+++ b/sdk/lib/core/null.dart
@@ -11,6 +11,7 @@
  * It is a compile-time error for a class to attempt to extend or implement
  * Null.
  */
+@pragma("vm.entry-point")
 class Null {
   factory Null._uninstantiable() {
     throw new UnsupportedError('class Null cannot be instantiated');
diff --git a/sdk/lib/core/object.dart b/sdk/lib/core/object.dart
index 38d6e27..c384735 100644
--- a/sdk/lib/core/object.dart
+++ b/sdk/lib/core/object.dart
@@ -18,6 +18,7 @@
  * section of the [library
  * tour](http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html).
  */
+@pragma("vm.entry-point")
 class Object {
   /**
    * Creates a new [Object] instance.
diff --git a/sdk/lib/libraries.json b/sdk/lib/libraries.json
index a84c362..a178398 100644
--- a/sdk/lib/libraries.json
+++ b/sdk/lib/libraries.json
@@ -144,6 +144,9 @@
       }
     }
   },
+  "none": {
+    "libraries": {}
+  },
   "dart2js": {
     "libraries": {
       "async": {
diff --git a/sdk/lib/libraries.yaml b/sdk/lib/libraries.yaml
index f184789..e7da30f 100644
--- a/sdk/lib/libraries.yaml
+++ b/sdk/lib/libraries.yaml
@@ -11,6 +11,9 @@
 # changing libraries, sources, and patch files.  See
 # https://github.com/dart-lang/sdk/issues/28836.
 
+none:
+  libraries: {}
+
 vm:
   libraries:
     _builtin:
diff --git a/tests/co19/co19-kernel.status b/tests/co19/co19-kernel.status
index f0aa564..595539b 100644
--- a/tests/co19/co19-kernel.status
+++ b/tests/co19/co19-kernel.status
@@ -15,7 +15,6 @@
 
 [ $compiler != dart2js && $fasta && !$strong ]
 Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t05: MissingCompileTimeError
 Language/Expressions/Constants/bitwise_operators_t02: MissingCompileTimeError
 Language/Expressions/Constants/exception_t04: MissingCompileTimeError
 Language/Expressions/Constants/literal_number_t01: CompileTimeError
@@ -26,7 +25,6 @@
 Language/Expressions/Constants/math_operators_t06: CompileTimeError
 Language/Expressions/Numbers/static_type_of_int_t01: CompileTimeError
 Language/Expressions/Numbers/syntax_t10: CompileTimeError
-Language/Expressions/This/placement_t04: MissingCompileTimeError
 LibTest/core/double/isInfinite_A01_t03: CompileTimeError
 LibTest/core/int/abs_A01_t01: CompileTimeError
 LibTest/core/int/ceilToDouble_A01_t01: CompileTimeError
@@ -175,11 +173,6 @@
 Language/Classes/Constructors/Factories/syntax_t01: CompileTimeError
 Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t03: CompileTimeError
 Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t04: CompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t04: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t05: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t06: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t07: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t12: MissingCompileTimeError
 Language/Classes/Constructors/Generative_Constructors/explicit_type_t01: CompileTimeError
 Language/Classes/Constructors/Generative_Constructors/explicit_type_t02: CompileTimeError
 Language/Classes/Constructors/Generative_Constructors/initializers_t15: CompileTimeError
@@ -654,7 +647,6 @@
 Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t02: CompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t03: CompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t04: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: MissingCompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/method_lookup_failed_t02: CompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/static_type_dynamic_t02: CompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/wrong_type_t01: CompileTimeError
@@ -804,7 +796,6 @@
 Language/Expressions/Strings/static_type_t07: CompileTimeError
 Language/Expressions/Strings/static_type_t08: CompileTimeError
 Language/Expressions/Strings/static_type_t09: CompileTimeError
-Language/Expressions/This/placement_t04: MissingCompileTimeError
 Language/Expressions/This/static_type_t01: CompileTimeError
 Language/Expressions/Throw/throw_various_types_t01: CompileTimeError
 Language/Expressions/Type_Cast/evaluation_t04: CompileTimeError
@@ -1695,10 +1686,6 @@
 Language/Classes/Constructors/Factories/const_modifier_t02: MissingCompileTimeError
 Language/Classes/Constructors/Factories/default_value_t01: MissingCompileTimeError
 Language/Classes/Constructors/Factories/default_value_t02: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t04: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t06: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t07: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t12: MissingCompileTimeError
 Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t02: MissingCompileTimeError
 Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t03: MissingCompileTimeError
 Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t05: MissingCompileTimeError
@@ -1727,7 +1714,6 @@
 Language/Expressions/Maps/key_value_equals_operator_t01: MissingCompileTimeError
 Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t01: MissingCompileTimeError
 Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t02: MissingCompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: MissingCompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/invocation_t03: MissingCompileTimeError
 Language/Expressions/Numbers/syntax_t06: CompileTimeError
 Language/Expressions/Numbers/syntax_t09: CompileTimeError
diff --git a/tests/co19_2/co19_2-analyzer.status b/tests/co19_2/co19_2-analyzer.status
index bbb17dd..accdc59 100644
--- a/tests/co19_2/co19_2-analyzer.status
+++ b/tests/co19_2/co19_2-analyzer.status
@@ -36,11 +36,6 @@
 Language/Expressions/Lists/constant_list_t01: CompileTimeError # Please triage this failure
 Language/Expressions/Maps/constant_map_t02: MissingCompileTimeError # Please triage this failure
 Language/Expressions/Maps/constant_map_type_t01: CompileTimeError # Please triage this failure
-Language/Expressions/Numbers/static_type_of_double_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Numbers/syntax_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Object_Identity/constant_objects_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Object_Identity/double_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Type_Cast/syntax_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 Language/Functions/generator_return_type_t02: MissingCompileTimeError # Issue 32192
 Language/Functions/generator_return_type_t06: MissingCompileTimeError # Issue 32192
 Language/Generics/scope_t03: CompileTimeError # Please triage this failure
@@ -68,11 +63,17 @@
 Language/Types/Interface_Types/subtype_t30: CompileTimeError # Please triage this failure
 Language/Types/Type_Void/syntax_t09: CompileTimeError # Please triage this failure
 Language/Types/Type_Void/using_t02: CompileTimeError # Please triage this failure
-Language/Variables/constant_initialization_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Variables/constant_variable_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 Language/Variables/final_or_static_initialization_t01: MissingCompileTimeError # Issue 27510
 Language/Variables/final_or_static_initialization_t02: MissingCompileTimeError # Issue 27510
 Language/Variables/final_or_static_initialization_t03: MissingCompileTimeError # Issue 27510
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t13: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t14: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t15: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t17: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t18: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t20: MissingCompileTimeError # Issue 34087
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t21: MissingCompileTimeError # Issue 34087
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l3_t01: Crash # Issue 33152, 33477
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l3_t02: Crash # Issue 33152, 33477
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t01: Crash # Issue 33152, 33477
@@ -82,6 +83,20 @@
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t05: Crash # Issue 33152, 33477
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t06: Crash # Issue 33152, 33477
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t07: Crash # Issue 33152, 33477
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t10: CompileTimeError # Issue 33805
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_pos_l1_t04: CompileTimeError # Issue 32903
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_pos_l1_t05: CompileTimeError # Issue 32903
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_pos_l1_t06: CompileTimeError # Issue 33864
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t10: CompileTimeError # Issue 33805
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_pos_l1_t04: CompileTimeError # Issue 32903
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_pos_l1_t05: CompileTimeError # Issue 32903
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_pos_l1_t06: CompileTimeError # Issue 33864
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t10: CompileTimeError # Issue 33805
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_pos_l1_t04: CompileTimeError # Issue 32903
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_pos_l1_t05: CompileTimeError # Issue 32903
+LanguageFeatures/Instantiate-to-bound/function/function_pos_l1_t01: CompileTimeError # Issue 33864
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t01: MissingCompileTimeError # Issue 33597
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t19: CompileTimeError # Issue 33597
 LanguageFeatures/Instantiate-to-bound/interface/interface_neg_assign_l2_t01: MissingCompileTimeError # Issue 33308
 LanguageFeatures/Instantiate-to-bound/interface/interface_neg_assign_l2_t02: MissingCompileTimeError # Issue 33308
 LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_l1_t02: MissingCompileTimeError # Issue 33596
@@ -109,3002 +124,4 @@
 LanguageFeatures/Super-bounded-types/static_analysis_A01_t07: CompileTimeError # Issue 32903
 LanguageFeatures/Super-bounded-types/static_analysis_A01_t08: CompileTimeError # Issue 32903
 LanguageFeatures/Super-bounded-types/static_analysis_A01_t09: CompileTimeError # Issue 32903
-LayoutTests/fast/alignment/parse-align-items_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/alignment/parse-align-self_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/alignment/parse-justify-self_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-callback-id_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-cancel2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-cancel_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-prefix_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-timestamps-advance_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-timestamps_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/animation/request-animation-frame-within-callback_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/animated-gif-as-background_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/background-fill-zero-area-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/background-position-parsing-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/background-repeat-computed-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/composite-highlight-is-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/mask-box-image-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/multiple-backgrounds-assert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/multiple-backgrounds-computed-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/multiple-backgrounds-initial-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/repeat/margin-shorthand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/backgrounds/repeat/parsing-background-repeat_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/borders/border-color-visited_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/borders/border-image-width-negative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/borders/border-image-width-numbers-computed-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/borders/border-radius-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/borders/border-width-percent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/box-shadow/box-shadow-parsing-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/box-sizing/css-table-with-box-sizing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/box-sizing/table-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/2d.composite.globalAlpha.fillPath_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/2d.fillText.gradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.gradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.negative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.verySmall_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/DrawImageSinglePixelStretch_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/access-zero-sized-canvas_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/alpha_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/arc-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-2d-imageData-create-nonfinite_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-alphaImageData-behavior_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-arc-360-winding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-arc-connecting-line_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-arc-zero-lineto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-as-image-incremental-repaint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-as-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-before-css_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-bezier-same-endpoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blend-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blend-solid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-clipping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-color-over-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-color-over-gradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-color-over-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-color-over-pattern_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-fill-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-global-alpha_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-gradient-over-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-gradient-over-gradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-gradient-over-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-gradient-over-pattern_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-image-over-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-image-over-gradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-image-over-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-image-over-pattern_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-pattern-over-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-pattern-over-gradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-pattern-over-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-pattern-over-pattern_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-blending-transforms_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-clearRect_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-clip-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-closePath-single-point_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-color-clamping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-composite-alpha_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-composite-canvas_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-composite-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-composite-stroke-alpha_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-composite-text-alpha_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-copyPixels_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-css-crazy_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-currentColor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-currentTransform_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-drawImage-incomplete_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-drawImage-scaled-copy-to-self_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-ellipse-360-winding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-ellipse-negative-radius_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-ellipse-zero-lineto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-ellipse_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fill-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fill-zeroSizeGradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fillRect-zeroSizeGradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fillRect_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fillStyle-no-quirks-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fillText-invalid-maxWidth_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-fillText-zeroSizeGradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-font-consistency_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-font-ex-units-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-getContext-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-getImageData-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-getImageData-negative-source_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-getImageData-rounding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-getImageData_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-gradient-without-path_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled-repaint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-invalid-fillstyle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-invalid-strokestyle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-large-dimensions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-large-fills_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-largedraws_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lineDash-input-sequence_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lineDash-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lineDash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lineWidth-intact-after-strokeRect_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lineWidth_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-longlived-context_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lose-restore-googol-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-lose-restore-max-int-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-measureText_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-modify-emptyPath_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-pattern-behaviour_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-pattern-modify_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-pattern-transform_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-putImageData_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-quadratic-same-endpoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-radial-gradient-spreadMethod_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-resetTransform_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-resize-after-paint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-save-restore-with-path_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-save-restore_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-scale-drawImage-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-scale-fillPath-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-scale-fillRect-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-scale-shadowBlur_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-scale-strokePath-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-set-properties-with-non-invertible-ctm_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-setTransform_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-skia-excessive-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-state-intact-after-putImageData_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-stroke-empty-fill_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-stroke-zeroSizeGradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokePath-alpha-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokePath-cap-join_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokePath-gradient-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokePath-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeRect-alpha-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeRect-gradient-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeRect-zeroSizeGradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeRect_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeText-invalid-maxWidth_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeText-strokes-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-strokeText-zeroSizeGradient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-style-intact-after-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-to-canvas_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-toDataURL-case-insensitive-mimetype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-toDataURL-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-toDataURL-jpeg-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-transforms-fillRect-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-transparency-and-composite_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-with-illegal-args_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas-with-incorrect-args_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/canvas_arc_largeangles_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/change-context_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/crash-set-font_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/draw-custom-focus-ring_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/draw-focus-if-needed-on-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/drawImage-with-broken-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/drawImage-with-negative-source-destination_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/drawImage-with-valid-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/drawImageFromRect_withToDataURLAsSource_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/fallback-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/fillText-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/fillrect-gradient-zero-stops_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/getPutImageDataPairTest_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/gradient-addColorStop-with-invalid-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/gradient-with-clip_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/invalid-set-font-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/linearGradient-infinite-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/pattern-with-transform_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/pointInPath_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/radialGradient-infinite-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/resize-while-save-active_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/rgba-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/set-colors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/setWidthResetAfterForcedRender_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/text-globalAlpha_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/toDataURL-noData_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/transformed-canvas-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/translate-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/array-bounds-clamping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/attrib-location-length-limits_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/buffer-bind-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/buffer-data-array-buffer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/canvas-2d-webgl-texture_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/canvas-resize-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/canvas-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/canvas-zero-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/compressed-tex-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/context-destroyed-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/context-lost_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/copy-tex-image-and-sub-image-2d_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/css-webkit-canvas-repaint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/css-webkit-canvas_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/draw-arrays-out-of-bounds_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/draw-elements-out-of-bounds_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/draw-webgl-to-canvas-2d_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/drawingbuffer-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/error-reporting_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/framebuffer-object-attachment_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/framebuffer-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/functions-returning-strings_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/get-active-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-bind-attrib-location-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-enable-enum-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-enum-tests_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-get-calls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-getshadersource_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-getstring_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-object-get-calls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-pixelstorei_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-teximage_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-uniformmatrix4fv_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-vertex-attrib-zero-issues_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-vertex-attrib_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/gl-vertexattribpointer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/glsl-conformance_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/incorrect-context-object-behaviour_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/index-validation-copies-indices_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/index-validation-crash-with-buffer-sub-data_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/index-validation-verifies-too-many-indices_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/index-validation-with-resized-buffer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/index-validation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/invalid-UTF-16_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/invalid-passed-params_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/is-object_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/null-object-behaviour_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/null-uniform-location_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/object-deletion-behaviour_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/oes-element-index-uint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/point-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/premultiplyalpha-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/program-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/read-pixels-pack-alignment_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/read-pixels-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/renderbuffer-initialization_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/renderer-and-vendor-strings_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/shader-precision-format_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-array-buffer-view_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgb565_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba4444_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba5551_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgb565_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba4444_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba5551_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgb565_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-svg-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-and-uniform-binding-bugs_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-image-webgl_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-input-validation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-sub-image-2d-bad-args_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-sub-image-2d_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/tex-sub-image-cube-maps_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texImage2DImageDataTest_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texImageTest_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texture-active-bind_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texture-bindings-uneffected-on-resize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texture-color-profile_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texture-complete_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texture-npot_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/triangle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/uniform-location-length-limits_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/uniform-location_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/uninitialized-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/viewport-unchanged-upon-resize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-composite-modes-repaint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-composite-modes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-large-texture_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-layer-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-specific_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-texture-binding-preserved_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-unprefixed-context-id_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/webgl/webgl-viewport-parameters-preserved_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/winding-enumeration_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/canvas/zero-size-fill-rect_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/cookies/local-file-can-set-cookies_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/after-with-first-letter-float-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/before-content-with-list-marker-in-anon-block-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/block-after_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/bug-106384_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/bug91547_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/details-before-after-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/empty-content-with-float-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/empty-first-letter-with-columns-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/first-letter-next-sibling-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/float-first-letter-siblings-convert-to-inline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/floating-before-content-with-list-marker-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/hit-test-generated-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/inline-splitting-with-after-float-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/malformed-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/media-generated-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/positioned-generated-content-under-run-in-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/pseudo-animation-before-onload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/pseudo-animation-display_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/pseudo-animation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/pseudo-element-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/pseudo-transition-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/pseudo-transition_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/quote-first-letter-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/quote-layout-focus-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/remove-div-from-flexible-box-with-floating-after-content-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/reset-content-to-initial_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/summary-before-after-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/table-row-after-no-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/table-with-scrollbar-corner_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-generated-content/text-before-table-col-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/anonymous-grid-items_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/auto-content-resolution-rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/breadth-size-resolution-grid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/calc-resolution-grid-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/display-grid-set-get_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/flex-and-minmax-content-resolution-rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/flex-content-resolution-columns_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/flex-content-resolution-rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-auto-flow-get-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-auto-flow-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-container-change-explicit-grid-recompute-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-crash-out-of-flow-positioned-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-bad-cast-addchild_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-border-grid-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-border-padding-grid-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-empty-row-column_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-min-max-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-padding-grid-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-padding-margin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-remove-svg-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-element-shrink-to-fit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-area-get-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-bad-named-area-auto-placement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-bad-resolution-double-span_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-change-order-auto-flow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-display_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-horiz-bt_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-lr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-rl_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-margin-resolution_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-strict-ordering-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/grid-template-areas-get-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/implicit-rows-auto-resolution_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/justify-self-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/minmax-fixed-logical-height-only_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/minmax-fixed-logical-width-only_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/percent-resolution-grid-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/place-cell-by-index_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-grid-layout/should-not-collapse-anonymous-blocks_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/css-tables_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/height-property-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-absolutes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-blocks_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-replaced-absolutes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/tables_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/width-property-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css-intrinsic-dimensions/width-shrinks-avoid-floats_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/MarqueeLayoutTest_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/add-remove-stylesheets-at-once-minimal-recalc-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/appearance-caps-lock-indicator_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/aspect-ratio-inheritance_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/aspect-ratio-parsing-tests_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/assert-marquee-not-last-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/attribute-selector-begin-dynamic-no-elementstyle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/attribute-selector-recursive-update-on-setAttribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/auto-min-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/background-clip-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/background-currentcolor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/background-parser-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/background-position-inherit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/background-position-serialize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/background-serialize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-image-fill-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-image-null-image-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-image-style-length_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-radius-property-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-shorthand-initialize-longhands_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-spacing-without-vertical-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-start-end_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/border-width-large_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/box-sizing-backwards-compat-prefix_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/box-sizing-border-box-dynamic-padding-border-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/button-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cached-sheet-restore-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/case-sensitive-attr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/checked-pseudo-selector_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/child-selector-implicit-tbody_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/collapsed-whitespace-reattach-in-style-recalc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/comment-before-charset-external_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/comment-before-charset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/computed-offset-with-zoom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content-language-case-insensitivity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content-language-dynamically-added_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content-language-dynamically-removed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content-language-mapped-to-webkit-locale_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content-language-multiple_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content-language-no-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-normal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/content/content-quotes-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/asterisk-counter-update-after-layout-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/complex-before_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-before-selector-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-cssText_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-function-input-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-function-input_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-number-input_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-reparent-table-children-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-reset-subtree-insert-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-ruby-text-cleared_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/counter-traverse-object-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/render-tree-reorg-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/counters/reparent-table-children-with-counters-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/crash-comparing-equal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/crash-on-incomplete-not_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/crash-on-incomplete-webkit-any_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-escaped-identifier-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-escaped-identifier_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-keyframe-style-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-keyframe-unexpected-end_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-properties-case-insensitive_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-selector-deeply-nested_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-selector-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css-set-selector-text-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css3-nth-space_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css3-nth-tokens-script_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/css3-nth-tokens-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cssText-cache_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cssText-shorthand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cssom-remove-shorthand-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/csstext-of-content-string_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cursor-parsing-image-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cursor-parsing-quirks_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/cursor-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dashboard-regions-attr-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dashboard-regions-undefined-length-assertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/delete-rule-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/deprecated-flex-box-zero-width-intrinsic-max-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/deprecated-flexbox-auto-min-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/device-aspect-ratio_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dfn-default-font-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/display-inline-block-scrollbar_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/display-none-inline-style-change-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/div_plus_nav_bug47971_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/draggable-region-parser_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/duplicate-property-in-rule-important_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/duplicate-property-in-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dynamic-class-backdrop-pseudo_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dynamic-class-pseudo-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dynamic-pseudo-class_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/dynamic-style-attribute-query_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/empty-display-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/empty-first-line-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/emptyStyleTag_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/end-of-buffer-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/ex-unit-with-no-x-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/fill-layer-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-child-display-change-inverse_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-child-display-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-anonymous-block-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-block-form-controls-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-capitalized-edit-select-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-inline-flow-split-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-inline-flow-split-table-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-nested_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-letter-wbr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/first-line-parent-style-different_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/fixed-width-intrinsic-width-excludes-scrollbars_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/focus-display-block-inline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-cache-bug_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-data-uri-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-descending-unicode-range_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-font-family-descriptor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-html-as-svg_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-in-media-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-inherit-initial_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-insert-link_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-multiple-families_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-multiple-ranges-for-unicode-range_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-svg-decoding-error_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-unicode-range-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-unicode-range-monospace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-unicode-range-overlap-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-unused-source-loaded_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-face-used-after-retired_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-family-builtins_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-family-initial-shorthand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-family-trailing-bracket-gunk_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-property-priority_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-shorthand-from-longhands_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/font-shorthand-mix-inherit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/fontface-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/fontfaceset-download-error_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/fontfaceset-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/fontfaceset-loadingdone_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-border-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-display-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-font_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-negative-top_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-page-break-inside_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-select-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/computed-style-with-zoom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/counterIncrement-without-counter_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/font-family-fallback-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-box_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-image-slice_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-style-shorthand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-borderRadius-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-column-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-length-unit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-outline-offset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-relayout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-text-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-zIndex-auto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-zoom-and-background-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/pending-stylesheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getComputedStyle/zoom-on-display-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getPropertyValue-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getPropertyValue-clip_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getPropertyValue-column-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getPropertyValue-columns_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getPropertyValue-webkit-margin-collapse_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/getPropertyValue-webkit-text-stroke_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/html-attr-case-sensitivity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/id-or-class-before-stylesheet-strict_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/id-or-class-before-stylesheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/image-set-parsing-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/image-set-setting_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/image-set-value-crash-in-fillImageSet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/implicit-attach-marking_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/important-js-override_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/infinite-floating-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/inherit-initial-shorthand-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/inherited-properties-explicit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/inherited-properties-rare-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/input-search-table-column-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/inputtext-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/insertRule-font-face_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/insertRule-media_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-cursor-property-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-hex-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-import-rule-insertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-not-with-pseudo-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-not-with-simple-selector-sequence_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-parsercontext-valid-keyword-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-predefined-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalid-rule-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/clears-invalidation-whole-tree_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/detach-reattach-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/detach-reattach_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/dynamic-selector-list-pseudo_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/invalidation-set-with-adjacent-combinators_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/no-invalidation-set-local-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/shadow-host-toggle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/style-update-with-added-stylesheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-attribute-style-invalidation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-class-any-pseudo_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-class-host-pseudo_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-class-id_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-class-shadow-combinator_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-class-style-invalidation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-class-type-selectors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/targeted-id-style-invalidation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/invalidation/toggle-style-inside-shadow-root_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/large-number-round-trip_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/large-value-csstext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/last-child-innerhtml_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/legacy-opacity-styles_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/link-alternate-stylesheet-1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/link-alternate-stylesheet-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/link-alternate-stylesheet-3_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/link-alternate-stylesheet-4_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/link-alternate-stylesheet-5_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/link-disabled-attr-parser_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/list-item-text-align_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/many-spaces-before-charset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/margin-start-end_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/max-device-aspect-ratio_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/max-height-and-max-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/max-width-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/media-query-recovery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/media-rule-dyn_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/media-rule-no-whitespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/media-rule-screenDepthPerComponent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/min-device-aspect-ratio_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/min-max-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/misplaced-charset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/modify-ua-rules-from-javascript_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/named-colors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/negative-orphans-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nested-at-rules_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nested-first-letter-with-float-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nested-rule-parent-sheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/next-sibling-changed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nth-child-implied-step_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nth-child-n_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nth-child-negative-a-param_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nth-child-no-mutations_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nth-child-odd-case-insensitive_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/nth-child-unary-prefix_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/number-parsing-crash-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/number-parsing-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/orphaned_units_crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/outline-currentcolor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/outline-hidden-illegal-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/outline-invert-assertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/outline-offset-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/overflow-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/padding-no-renderer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/padding-start-end_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parse-border-image-repeat-null-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parse-color-int-or-percent-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parse-timing-function-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-at-rule-recovery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-css-allowed-string-characters_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-css-comment_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-css-escapes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-css-nonascii_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-css-nth-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-css-surrogate-pairs_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-expr-error-recovery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-font-variant-ligatures_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-not-after-supports_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-object-fit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-object-position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-page-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-selector-error-recovery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-text-rendering_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-unexpected-eof_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/parsing-webkit-font-smoothing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pending-images-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/percent-character-as-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/percent-min-width-img-src-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/percent-width-img-src-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/position-absolute-float_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/positioned-in-relative-position-inline-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/positioned-overflow-scroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-any_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-default-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-default-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-default-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-default-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-element-opagedxy-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-empty-display-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-empty-dynamic-empty_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-escaped-parenthesis_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-in-range-invalid-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-in-range_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-invalid-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-invalid-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-invalid-novalidate-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-not_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-out-of-range_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-006_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-required-optional-unapplied_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-target-indirect-sibling-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-target-indirect-sibling-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-valid-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-valid-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-valid-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-valid-007_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-valid-dynamic_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudo-valid-unapplied_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/pseudostyle-anonymous-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/readonly-pseudoclass-opera-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/readonly-pseudoclass-opera-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/readonly-pseudoclass-opera-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/readonly-pseudoclass-opera-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/readwrite-contenteditable-recalc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/recalc-direct-adjacent-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/recalc-optgroup-inherit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/recursive-delay-update-scroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/relative-position-replaced-in-table-display-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/relative-positioned-block-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/rem-units-body_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/remove-attribute-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/remove-class-name_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/remove-fixed-resizer-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/remove-style-after-insert-import-rule-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/resize-object-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/resize-value-compared_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/rgba-custom-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/scrollbar-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/selector-text-escape_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/shadow-current-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/shadow-dom-scope_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sheet-collection-link_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sheet-title_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/short-inline-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/shorthand-priority_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/shorthand-setProperty-important_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/shorthands-four-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sibling-selectors-dynamic_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sibling-selectors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/small-caps-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/space-before-charset-external_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/space-before-charset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sticky/parsing-position-sticky_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sticky/remove-inline-sticky-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sticky/remove-sticky-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/sticky/sticky-table-col-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/string-quote-binary_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-element-process-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-scoped/style-scoped-in-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-scoped/style-scoped-nested_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-scoped/style-scoped-shadow-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-scoped/style-scoped-with-dom-operation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-scoped/style-scoped-with-important-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-sharing-grand-parent-invalidate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-sharing-inline-stylesheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/style-sharing-type-and-readonly_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/stylesheet-enable-first-alternate-link_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-link_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-sheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/stylesheet-enable-second-alternate-link_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/stylesheet-parentStyleSheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/test-setting-canvas-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/text-align-initial_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/text-align-webkit-match-parent-parse_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/text-align-webkit-match-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/text-rendering-priority_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/transform-origin-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/transition_shorthand_parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/unicode-bidi-computed-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/url-with-multi-byte-unicode-escape_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/use-incorrect-svg-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/vertical-align-length-copy-bug_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/visibility-collapse-form-buttons_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/visited-link-hang_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/webfont-lighter-weight-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/webkit-color-adjust_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/webkit-empty-transform-preserve3d-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/webkit-keyframes-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/webkit-keyframes-errors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/webkit-marquee-speed-unit-in-quirksmode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/word-break-user-modify-allowed-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/zoom-in-length-round-trip_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css/zoom-property-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-align-last/getComputedStyle/getComputedStyle-text-align-last-inherited_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-align-last/getComputedStyle/getComputedStyle-text-align-last_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-line_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-underline-position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent-inherited_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/css3-text/css3-text-justify/getComputedStyle/getComputedStyle-text-justify_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/52776_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Comment/remove_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/basic_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-strict-mode-wtih-checkbox_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-user-select-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/replace-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Document/replace-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/DocumentFragment/document-fragment-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/client-rect-list-argument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/dimension-properties-unrendered_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/fixed-position-offset-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/getBoundingClientRect-getClientRects-relative-to-viewport_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/getClientRects_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/hostname-host_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/id-in-getelement01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/id-in-insert-hr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/id-in-map_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/id-in-param_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/node-list-identity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/offsetTop-table-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/remove_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/scrollWidth_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Element/setAttribute-case-insensitivity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/anchor-ismap-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/get-href-attribute-port_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/remove-href-from-focused-anchor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-host_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hostname_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-pathname_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-port_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-prevents-rebase_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-protocol_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-rebase_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-search_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-whitespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLAreaElement/area-islink-focus-null-ptr-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLBaseElement/href-attribute-resolves-with-respect-to-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLBaseElement/multiple-base-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLButtonElement/change-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLButtonElement/value/getset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-autofocus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unfocusable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unselectable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/multiple-centered-dialogs_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/show-modal-focusing-steps_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/submit-dialog-close-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/synthetic-click-inert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDocument/active-element-gets-unforcusable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDocument/activeElement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDocument/clone-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDocument/title-get_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLDocument/title-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-before-text-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-child-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-text-form-control_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-children_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-remove-add-children_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-text-form-control-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-text-form-control_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-dir-value-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-empty-string_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-false-string_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-invalid-string_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-missing-ancestor-false_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-missing-ancestor-true_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-ancestor-missing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-false_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-true_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/attr-true-string_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/innerHTML-selection-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-false_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-inherit-parent-false_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-inherit-parent-true_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-invalid-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-true_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/set-value-caseinsensitive_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/spellcheck_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLElement/translate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFontElement/size-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFormElement/adopt-assertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFormElement/elements-not-in-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFormElement/htmlformelement-indexed-getter_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLImageElement/image-alt-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLImageElement/image-loading-gc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLImageElement/image-natural-width-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLImageElement/image-src-absolute-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLImageElement/parse-src_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/checked-pseudo-selector_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/clone-input-checked_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/cloned-input-checked-state_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/duplicate-element-names_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/input-checked-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/input-hidden-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/input-image-alt-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/input-size-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/input-text-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/size-as-number_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLInputElement/size-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLabelElement/click-label_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLabelElement/focus-label_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLabelElement/label-control_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/cachedresource-types_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test-nonexistent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-beforeload-recursive_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onerror-stylesheet-with-existent-and-non-existent-import_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onerror-stylesheet-with-non-existent-import_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onerror_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onload-before-page-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onload-stylesheet-with-import_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onload2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-onload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/link-sheet-out-of-tree_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/onload-completion-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-detached_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/prefetch_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/resolve-url-on-insertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLLinkElement/subresource_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLMetaElement/meta-attributes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLMeterElement/meter-percent-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLMeterElement/set-meter-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLObjectElement/beforeload-set-text-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLObjectElement/children-changed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLObjectElement/form/test1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLObjectElement/set-type-to-null-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOptionElement/collection-setter-getter_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-children-removed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-reset-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-validity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLProgressElement/indeterminate-progress-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLProgressElement/progress-element-indeterminate-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLProgressElement/progress-element-with-child-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLProgressElement/progress-element-with-style-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/async-false-inside-async-false-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/async-inline-script_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/async-onbeforeload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/defer-inline-script_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/defer-onbeforeload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/defer-script-invalid-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/dont-load-unknown-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/isURLAttribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/remove-in-beforeload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/remove-source_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/script-async-attr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/script-for-attribute-unexpected-execution_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/script-load-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/script-reexecution_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLScriptElement/script-set-src_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/listbox-select-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/named-options_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/remove-element-from-within-focus-handler-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/select-element-item-argument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/select-selectedOptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/selected-false_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLSelectElement/selected-index-preserved-when-option-text-changes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/insert-parser-generated_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/programmatically-add-style-with-onerror-handler_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/programmatically-add-style-with-onload-handler_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/style-onerror-with-existent-and-non-existent-import_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/style-onerror_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/style-onload-before-page-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/style-onload2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLStyleElement/style-onload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/cellpadding-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/createCaption_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/early-acid3-65-excerpt_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/early-acid3-66-excerpt_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/insert-row_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/tBodies_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableElement/table-with-invalid-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableRowElement/cells_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableRowElement/exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableRowElement/insertCell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTableSectionElement/rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/cloneNode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/contentWrappers_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/cycles-in-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/cycles_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/inertContents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/innerHTML-inert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/innerHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/no-form-association_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocumentXHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTemplateElement/xhtml-parsing-and-serialization_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/HTMLTextAreaElement/reset-textarea_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/added-out-of-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/callback-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/clear-transient-without-delivery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/create-during-delivery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/cross-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/database-callback-delivery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/delivery-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/disconnect-cancel-pending_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/document-fragment-insertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/mutate-during-delivery_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/mutation-record-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/mutation-record-nullity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-attributes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-characterdata_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-childList_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-options-attributes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-options-character-data_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observe-subtree_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observer-wrapper-dropoff-transient_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/observer-wrapper-dropoff_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/removed-out-of-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/takeRecords_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/transient-gc-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/MutationObserver/weak-callback-gc-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Node/DOMNodeRemovedEvent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Node/contains-method_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Node/fragment-mutation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Node/initial-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/NodeList/childNodes-reset-cache_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/NodeList/childNodes-reverse-iteration_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/NodeList/invalidate-node-lists-when-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/NodeList/nodelist-moved-to-fragment-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/NodeList/nodelist-reachable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range-insertNode-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/13000_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/31684_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/bug-19527_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/create-contextual-fragment-script-not-ran_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/create-contextual-fragment-script-unmark-already-started_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/create-contextual-fragment_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/deleted-range-endpoints_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/getClientRects-character_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/insertNode-empty-fragment-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/missing-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/mutation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-clone-contents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-clone-empty_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-comparePoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-created-during-remove-children_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-delete-contents-event-fire-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-delete-contents-mutation-event-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-detached-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-expand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-extract-contents-event-fire-crash2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-extract-contents-event-fire-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-extract-contents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-extractContents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-insertNode-assertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-isPointInRange_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-modifycontents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-on-detached-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/range-processing-instructions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/remove-all-children-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/remove-twice-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/select-node-different-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/split-text-in-range_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/surroundContents-1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/surroundContents-check-boundary-points_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Range/surroundContents-for-detached-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Selection/collapseToX-empty-selection_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Selection/getRangeAt_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/bug-17313_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/caseID-almost-strict_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/caseID-strict_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/caseID_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/caseTagX_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/caseTag_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/detached-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList-almost-strict_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/dumpNodeList_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/duplicate-id-scope_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/elementRoot_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/id-fastpath-almost-strict_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/id-fastpath-strict_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/id-fastpath_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/not-supported-namespace-in-selector_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/unknown-pseudo_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/SelectorAPI/viewless-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/detached-parent-rule-without-wrapper_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/detached-shadow-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/detached-style-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/detached-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/detached-stylesheet-without-wrapper_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/discarded-sheet-owner-null_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/empty-shadow-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/removed-media-rule-deleted-parent-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/StyleSheet/removed-stylesheet-rule-deleted-parent-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Text/next-element-sibling_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Text/normalize-crash-in-spell-checker_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Text/previous-element-sibling_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Text/remove_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Text/replaceWholeText_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Text/text-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/TreeWalker/TreeWalker-currentNode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/atob-btoa_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/dispatchEvent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/invalid-protocol_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/querySelectorAll-with-pseudo-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/replaceable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/window-remove-event-listener_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/window-resize-contents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/window-resize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/window-screen-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/Window/window-scroll-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLHttpRequest-constants_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer-attribute-entities_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer-attribute-namespaces_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer-attribute-ns-prefix_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer-doctype2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer-doctype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer-double-xmlns_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/XMLSerializer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/allowed-children_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/anchor-origin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/anchor-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/anchor-toString_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/anchor-without-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/attribute-namespaces-get-set_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/background-shorthand-csstext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/blur-contenteditable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/boolean-attribute-reflection_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/capturing-event-listeners_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/characterdata-api-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/class-attr-change-double-mutation-fire_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/click-method-on-html-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/client-width-height-quirks_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-contents-0-end-offset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-node-default-argument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-node-form-elements-with-attr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-node-form-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-node-load-event-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-node-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/clone-node-z-index_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/cloneNode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/comment-dom-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/comment-not-documentElement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/computed-style-set-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/containerNode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createDocumentType-ownerDocument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createDocumentType2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createDocumentType_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createDocument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createElement-with-column_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createElement-with-column_xml_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createElementNS-empty-namespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createElementNS-namespace-errors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createElementNS_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/createElement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-cached-import-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-delete-doc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-inline-style-declaration-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-inline-style-important_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-innerHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-insert-import-rule-twice_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-insert-import-rule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-mediarule-deleteRule-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-mediarule-functions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-mediarule-insertRule-update_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-mediarule-parentRule_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-rule-functions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-selectorText_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-set-property-exception_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-shortHands_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/css-shorthand-common-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/cssTarget-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/constructor-calls-created-synchronously_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/created-callback_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/document-register-basic_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/document-register-namespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/document-register-on-create-callback_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/document-register-type-extensions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/element-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/element-upgrade_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/html-element-type-extension-assert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/invalid-type-extension-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/lifecycle-created-createElement-recursion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/type-extension-undo-assert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/unresolved-pseudoclass_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/custom/upgrade-candidate-remove-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dataset-xhtml_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dataset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/delete-contents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/destroy-selected-radio-button-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/document-importNode-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/document-set-title-mutations_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/document-set-title-no-child-on-empty_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/document-set-title-no-reuse_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/document-stylesheets-empty-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/document-width-height-force-layout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dom-instanceof_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dom-method-document-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dom-parse-serialize-display_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dom-parse-serialize-xmldecl_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/dom-parse-serialize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/domtimestamp-is-number_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/duplicate-ids-document-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/duplicate-ids_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/elementFromPoint-scaled-scrolled_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/empty-hash-and-search_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/focus-contenteditable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/fragment-activation-focuses-target_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/gc-image-element-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/gc-image-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementById-consistency2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementById-consistency3_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementById-consistency4_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementById-consistency5_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementById-consistency_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/006_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/007_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/008_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/009_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/010_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/011_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/012_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/013_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/014_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/015_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getElementsByClassName/dumpNodeList_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getelementbyname-invalidation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/getelementsbyname-invalidation-cache_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/html-collections-named-getter-mandatory-arg_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/htmlcollection-length-after-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/icon-size-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/icon-url-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/icon-url-list_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/id-attribute-with-namespace-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/image-object_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/implementation-api-args_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/implementation-createHTMLDocument_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/import-document-fragment_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/importNode-confusing-localName_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/importNode-null_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/importNode-prefix_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/importNode-unsupported-node-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/importNodeHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/importNodeXML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/inner-text-first-letter_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/inner-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/inner-width-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/innerHTML-detached-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/innerHTML-escaping-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/innerHTML-nbsp_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/insert-span-into-long-text-bug-28245_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/insertBefore-refChild-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/javascript-backslash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/jsDevicePixelRatio_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/left-overflow-in-ltr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/legend-display-inline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/length-attribute-mapping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/location-hash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/multiple-ids_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/mutation-event-remove-inserted-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/navigator-userAgent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/navigator-vendorSub_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/no-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/node-childNodes-idempotence_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/node-iterator-reference-node-removed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/node-iterator-with-doctype-root_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/non-styled-element-id-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/noscript-canvas-in-created-html-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/noscript-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/object-plugin-hides-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/offset-parent-positioned-and-inline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/offset-position-writing-modes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/onerror-img_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/option-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/partial-layout-block_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/remove-body-during-body-replacement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/remove-children-notification-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/remove-named-attribute-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/remove-style-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/replace-child-siblings_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/replace-first-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/script-innerHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/serialize-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/set-custom-validity-with-too-few-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/set-innerHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/setAttribute-using-initial-input-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/setAttributeNS-namespace-errors_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/setter-type-enforcement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/access-document-of-detached-stylesheetlist-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/base-in-shadow-tree_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-element-api_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-element-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-element-includer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-element-outside-shadow-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-pseudo-element-css-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-pseudo-element-dynamic-attribute-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-pseudo-element-overridden_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-pseudo-element-relative-selector-css-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-pseudo-element-with-host-pseudo-class_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/content-reprojection-fallback-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/custom-pseudo-in-selector-api_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/distribution-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/distribution-for-event-path_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/distribution-update-recalcs-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/elementfrompoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/elements-in-frameless-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/event-path-not-in-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/event-path_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/form-in-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/get-distributed-nodes-orphan_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/get-element-by-id-in-shadow-mutation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/getelementbyid-in-orphan_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/getelementbyid-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/host-context-pseudo-class-css-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/host-pseudo-class-css-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/host-wrapper-reclaimed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/insertion-point-list-menu-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/insertion-point-video-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/link-in-shadow-tree_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/no-renderers-for-light-children_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/offsetWidth-host-style-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/ol-with-distribution-recalc-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/olderShadowRoot_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/pseudoclass-update-checked-option_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-optgroup_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-option_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-optgroup_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-option_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/reinsert-insertion-point_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/remove-and-insert-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/remove-styles-in-shadow-crash-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/remove-styles-in-shadow-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-aware-shadow-root_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-content-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-disable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-element-inactive_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-hierarchy-exception_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-removechild-and-blur-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-root-append_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadow-root-js-api_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowdom-dynamic-styling_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowdom-for-input-spellcheck_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowdom-for-input-type-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowdom-for-unknown-with-form_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowhost-keyframes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowroot-clonenode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowroot-host_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/shadowroot-keyframes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/sibling-rules-dynamic-changes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/stale-distribution-after-shadow-removal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/style-insertion-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/style-of-distributed-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/style-sharing-sibling-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/style-sharing-styles-in-older-shadow-roots_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/suppress-mutation-events-in-shadow-characterdata_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shadow/title-element-in-shadow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/shared-inline-style-after-node-removal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/stripNullFromTextNodes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/subtree-modified-attributes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/text-api-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/text-control-crash-on-select_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/text-node-attach-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/title-content-set-innerText-get_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/vertical-scrollbar-in-rtl-doesnt-fire-onscroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/vertical-scrollbar-when-dir-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/xhtml-fragment-parsing-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/xhtml-fragment-whitespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dom/xmlserializer-serialize-to-string-exception_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/5872671_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/ancestor-to-absolute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/checkbox-selection-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/continuation-detach-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/crash-generated-counter_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/crash-generated-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/crash-generated-quote_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/crash-generated-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/float-remove-above-line-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/float-remove-above-line_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/inline-to-block-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/insertAdjacentElement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/insertAdjacentHTML-allowed-parents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/insertAdjacentHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/insertAdjacentText_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/jQuery-animation-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/layer-no-longer-paginated_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/position-absolute-to-fixed-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/position-change-layout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/recursive-layout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/style-access-late-stylesheet-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/dynamic/subtree-common-root_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/encoding/bom-in-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/add-event-without-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/change-overflow-on-overflow-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/clipboard-clearData_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/clipboard-dataTransferItemList-remove_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/clipboard-dataTransferItemList_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/create-document-crash-on-attach-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/defaultprevented_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/delayed-style-mutation-event-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/dispatch-event-being-dispatched_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/dispatch-event-no-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/dispatch-synthetic-mouseevent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/div-focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/document-elementFromPoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/domnodeinsertedintodocument-dispatched-post-rendering_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-attributes-after-exception_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-creation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-fire-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-fired-after-removal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-listener-html-non-html-confusion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-listener-list-mutation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-listener-moving-documents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-listener-sharing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-on-created-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-on-xhr-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/event-trace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/fire-scroll-event-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/fire-scroll-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/focus-remove-focuesed-node_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/form-onchange_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/init-event-null-view_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/init-message-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/initkeyboardevent-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/input-focus-no-duplicate-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/invalid-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/invalid-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/invalid-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/invalid-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/invalid-005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/keyboardevent-location-constants_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/keyboardevent-mousedown-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/label-focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/mutation-during-append-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/mutation-during-insert-before_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/mutation-during-replace-child-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/mutation-during-replace-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/nested-event-remove-node-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/no-window-load_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/onerror-bubbling_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/onerror-img-after-gc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/overflowchanged-event-raf-timing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/page-visibility-null-view_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/programmatic-check-no-change-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/scoped/editing-commands_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/scroll-during-zoom-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/scroll-event-does-not-bubble_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/scroll-event-phase_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/selectstart-on-selectall_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/selectstart-prevent-selectall_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/stop-immediate-propagation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/stopPropagation-checkbox_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/submit-reset-nested-bubble_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/tabindex-removal-from-focused-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/wheelevent-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/window-load-capture_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/events/xhr-onclick-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/eventsource/eventsource-attribute-listeners_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/eventsource/eventsource-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/exclusions/parsing/parsing-wrap-flow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/blob-close-read_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/blob-close-revoke_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/blob-constructor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/blob-parts-slice-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/blob-slice-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/blob-slice-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/create-blob-url-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-abort-in-last-progress_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-done-reading-abort_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-fffd_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-immediate-abort_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-methods-illegal-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-readystate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/file-reader-result-twice_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/not-enough-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/read-blob-as-array-buffer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/revoke-blob-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/url-required-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/workers/inline-worker-via-blob-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/files/xhr-response-blob_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/async-operations_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/directory-entry-to-uri_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-after-reload-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-entry-to-uri_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-from-file-entry_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-metadata-after-write_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-abort-continue_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-abort-depth_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-abort_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-empty-blob_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-gc-blob_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-truncate-extend_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/file-writer-write-overlapped_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/filesystem-reference_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/filesystem-unserializable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/filesystem-uri-origin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/input-access-entries_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-copy_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-get-entry_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-get-metadata_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-get-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-move_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-read-directory_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-remove_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-restricted-chars_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-restricted-names_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/op-restricted-unicode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/read-directory-many_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/read-directory_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/simple-readonly-file-object_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/simple-readonly_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/simple-required-arguments-getdirectory_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/simple-required-arguments-getfile_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/simple-temporary_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/filesystem/snapshot-file-with-gc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/box-orient-button_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/box-size-integer-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/child-flexing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/crash-anonymous-box_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/crash-button-input-autofocus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/crash-button-keygen_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/crash-button-relayout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/crash-flexbox-no-layout-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/flexing-overflow-scroll-item_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/inline-children-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/intrinsic-min-width-applies-with-fixed-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/layoutHorizontalBox-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/line-clamp-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/order-iterator-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/overhanging-floats-not-removed-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/repaint-scrollbar_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/flexbox/vertical-box-form-controls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/11423_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/4628409_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/8250_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/HTMLOptionElement_selected2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/HTMLOptionElement_selected_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-customError_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-patternMismatch-unsupported_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-patternMismatch_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-rangeOverflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-rangeUnderflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-removed-control_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-stepMismatch_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-tooLong-input_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-tooLong-textarea_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-typeMismatch-email_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-typeMismatch-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-006_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-008_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/ValidityState-valueMissing-009_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/activate-and-disabled-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/add-remove-form-elements-stress-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autocomplete_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-focus-only-once_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-input-css-style-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-opera-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-opera-005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-opera-007_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-opera-008_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/autofocus-readonly-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/button-baseline-and-collapsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/button-click-DOM_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/button/button-disabled-blur_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/change-form-element-document-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkValidity-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkValidity-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkValidity-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkValidity-004_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkValidity-cancel_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkValidity-handler-updates-dom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkbox-click-indeterminate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkbox-default-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/checkbox-onchange_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/clone-input-with-dirty-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/color/color-setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/color/input-value-sanitization-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/control-detach-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/cursor-position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/dangling-form-element-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datalist/datalist-child-validation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datalist/datalist-nonoption-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datalist/datalist_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datalist/input-list_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datalist/slider-appearance-with-ticks-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-change-layout-by-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/ValidityState-rangeOverflow-date_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/ValidityState-rangeUnderflow-date_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/ValidityState-stepMismatch-date_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/ValidityState-typeMismatch-date_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/date-click-on-label_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/date-input-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/date-interactive-validation-required_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/date-pseudo-classes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/date-setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/input-date-validation-message_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/input-valueasdate-date_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/date/input-valueasnumber-date_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-change-layout-by-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeOverflow-datetimelocal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeUnderflow-datetimelocal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/ValidityState-stepMismatch-datetimelocal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/ValidityState-typeMismatch-datetimelocal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/datetimelocal-input-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/datetimelocal-interactive-validation-required_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/datetimelocal-setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/delete-text-with-invisible-br_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/disabled-attr-checkvalidity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/double-focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/enctype-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/fieldset-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/fieldset-disabled_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/fieldset-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/fieldset-name_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/fieldset-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/focus-in-fieldset-disabled_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/fieldset/validation-in-fieldset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/file/file-input-capture_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/file/file-setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/focus-style-pending_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-added-to-table_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-associated-element-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-attribute-nonexistence-form-id_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-attribute-not-in-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-dirname-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-input-named-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/form-submission-create-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/formmethod-attribute-button-html_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/formmethod-attribute-input-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/formmethod-attribute-input-html_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/formmethod-attribute-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/formnovalidate-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/hidden-input-enabled_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/hidden/change-type-to-hidden-after-updating-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/hidden/hidden-setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/image/image-error-event-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/image/image-error-event-modifies-type-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/image/image-setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/image/width-and-height-of-detached-input_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/incremental-dom-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/indeterminate-input-types_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-appearance-elementFromPoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-appearance-maxlength_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-changing-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-file-set-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-hit-test-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-implicit-length-limit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-inputmode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-maxlength-unsupported_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-maxlength_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-minmax_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-multiple_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-pattern_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-select-webkit-user-select-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-selection-hidden_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-setvalue-selection_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-stepup-stepdown_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-text-maxlength_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-text-paste-maxlength_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-type-change-focusout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-type-change3_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-type-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-value-sanitization_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-valueasnumber-unsupported_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-width-height-attributes-without-renderer-loaded-image_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-width-height-attributes-without-renderer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-width-height-attributes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-widths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/input-zero-height-focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/interactive-validation-assertion-by-validate-twice_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/interactive-validation-attach-assertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/interactive-validation-select-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/large-parts_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/legend-absolute-position-auto-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/legend-display-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/listbox-scroll-after-options-removed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/listbox-select-all_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/listbox-selection-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/menulist-disabled-selected-option_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/menulist-no-renderer-onmousedown_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/menulist-selection-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/menulist-submit-without-selection_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/method-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/min-content-form-controls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/misplaced-img-form-registration_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/missing-action_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/multiple-selected-options-innerHTML_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/novalidate-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/onchange-change-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-change-single-selected_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-index_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-label-trim-html-spaces_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-strip-unicode-spaces_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-value-and-label-changed-by-js_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-value-and-label_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/option-value-trim-html-spaces_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/output-reset-assertion-failed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/parser-associated-form-removal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/paste-into-textarea_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/paste-multiline-text-input_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/pattern-attribute-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/pattern-attribute-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/pattern-attribute-003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/percent-height-auto-width-form-controls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/placeholder-dom-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/placeholder-non-textfield_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/plaintext-mode-1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/radio-checkbox-restore-indeterminate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/required-attribute-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/required-attribute-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/search-placeholder-value-changed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/search-popup-crasher_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-change-listbox-to-popup-roundtrip_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-change-popup-to-listbox-in-event-handler_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-change-popup-to-listbox-roundtrip_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-clientheight-large-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-clientheight-with-multiple-attr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-display-none-style-resolve_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-generated-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-list-box-mouse-focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-max-length_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-namedItem_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-out-of-bounds-index_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-remove-option_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-reset-multiple-selections-4-single-selection_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-set-inner_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-set-length-with-mutation-remove_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-set-length-with-mutation-reorder_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-set-length-with-mutation-reparent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-set-length-with-mutation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-set-length_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/select-width-font-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/selected-index-assert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/selection-direction_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/selection-start-end-readonly_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/selection-wrongtype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/setCustomValidity-arguments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/setCustomValidity-existence_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/setCustomValidity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/setrangetext_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/shadow-tree-exposure_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/slow-click_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/submit-form-attributes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-ancestor-dir-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-nonhtml-ancestor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/submit-form-with-dirname-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/submit-nil-value-field-assert_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/text-control-select-blurred_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/text-control-selection-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/text-set-value-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-and-mutation-events-appending-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-and-mutation-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-checkValidity-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-crlf_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-default-value-leading-newline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-initial-caret-position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-maxlength_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-newline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-no-scroll-on-blur_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-paste-newline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-placeholder-dom-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-placeholder-relayout-assertion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-rows-cols_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-scrollbar-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-selection-preservation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-set-defaultvalue-after-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-setvalue-without-renderer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-submit-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-trailing-newline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textarea-wrap-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textfield-clone_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/textfield-focus-out_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/update-from-element-during-editing-crash-1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/update-from-element-during-editing-crash-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/validationMessage_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/validity-property_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/forms/willvalidate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/adjacent-html-context-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/body-offset-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/clone-range_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/details-add-child-1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/details-add-child-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/details-add-details-child-1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/details-add-details-child-2_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/details-click-controls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/details-mouse-click_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/disable-style-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/draggable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/empty-fragment-id-goto-top_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/eventhandler-attribute-non-callable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/hidden-attr-dom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/hidden-attr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/imports/import-element-removed-flag_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/imports/import-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/input-type-change-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/layout-with-pending-stylesheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/main-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/mark-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/object-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/range-point-in-range-for-different-documents_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/select-dropdown-consistent-background-color_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/tab-order_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/tabindex-removal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/text-field-input-types_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/unknown-tag_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/html/xhtml-serialize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline-block/inline-block-vertical-align-t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/boundingBox-with-continuation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/continuation-inlines-inserted-in-reverse-after-block_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/empty-inline-before-collapsed-space_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/fixed-pos-moves-with-abspos-inline-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent-relative-ancestor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/fixed-pos-moves-with-abspos-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/fixed-pos-with-transform-container-moves-with-abspos-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/inline-position-top-align_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/inline-relative-offset-boundingbox_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/inline-with-empty-inline-children_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/out-of-flow-objects-and-whitespace-after-empty-inline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/parent-inline-element-padding-contributes-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/positioned-element-padding-contributes-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/reattach-inlines-in-anonymous-blocks-with-out-of-flow-siblings_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/inline/skipped-whitespace-client-rect_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/005_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/additional-inline-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-case_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-custom-tag_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-iframe_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-nbsp_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-special-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-svg-read_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-svg-write_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-template-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-uri-resolution_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/innerHTML-xml_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/innerHTML/javascript-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/layers/negative-scroll-positions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/layers/normal-flow-hit-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/layers/zindex-hit-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/lists/calc-width-with-space_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/lists/item-not-in-list-line-wrapping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/lists/list-style-position-inside_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/lists/marker-preferred-margins_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/about-blank-hash-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/about-blank-hash-kept_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/hashchange-event-async_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/hashchange-event-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/loadInProgress_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/local-css-allowed-in-strict-mode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/onload-policy-ignore-for-frame_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/scroll-position-restored-on-back_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/loader/stateobjects/replacestate-updates-location_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/masking/parsing-clip-path-iri_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/masking/parsing-clip-path-shape_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/masking/parsing-mask-source-type_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/masking/parsing-mask_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/invalid-lengths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/matchmedium-query-api_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/media-query-list-syntax_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/media-query-list_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/media-query-serialization_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-append-delete_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-color-index_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-color-index_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-js-media-except_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-js-media-except_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-js-media-except_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-js-update-media_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/media/mq-parsing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/mediastream/RTCIceCandidate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/mediastream/getusermedia_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/balance-trailing-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/balance-trailing-border_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/balance-unbreakable_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/break-after-always-bottom-margin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/break-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/column-width-zero_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/columns-shorthand-parsing_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/cssom-view_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/fixed-column-percent-logical-height-orthogonal-writing-mode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/flipped-blocks-hit-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/float-truncation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/gap-non-negative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/hit-test-above-or-below_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/hit-test-end-of-column-with-line-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/hit-test-end-of-column_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/hit-test-float_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/hit-test-gap-between-pages-flipped_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/hit-test-gap-between-pages_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/image-inside-nested-blocks-with-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/inherit-column-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/initial-column-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/inline-getclientrects_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance-images_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t08: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/newmulticol/balance_t10: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/orphans-relayout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-lr/break-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-lr/gap-non-negative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-rl/break-properties_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-rl/gap-non-negative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/vertical-rl/image-inside-nested-blocks-with-border_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/widows-and-orphans_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/widows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/widows_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/multicol/zeroColumnCount_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/overflow/child-100percent-height-inside-fixed-container-with-overflow-auto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/overflow/height-during-simplified-layout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/overflow/overflow-rtl-vertical-origin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/overflow/replaced-child-100percent-height-inside-fixed-container-with-overflow-auto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/overflow/scroll-vertical-not-horizontal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/overflow/scrollbar-restored_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/block-nesting-cap_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/foster-parent-adopted_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/foster-parent-adopted_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/foster-parent_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/fragment-parser-doctype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/href-whitespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/image-tag-parses-to-HTMLImageElement_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/innerhtml-with-prefixed-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/parse-wbr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/pop-all-after-after-body_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/pre-first-line-break_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/residual-style-close-across-n-blocks_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/stray-end-tags-with-attributes-001_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/stray-end-tags-with-attributes-002-alt_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/stray-end-tags-with-attributes-002_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/stray-param_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/parser/strict-img-in-map_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/available-height-for-content_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor-vertical-lr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor-vertical-lr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/container-width-zero_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/preferred-widths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/table-percent-height-text-controls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/table-percent-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/table-percent-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/replaced/table-replaced-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/ruby/after-doesnt-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/ruby/before-block-doesnt-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/ruby/modify-positioned-ruby-text-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/ruby/parse-rp_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/ruby/ruby-line-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/scrolling/scroll-element-into-view_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/scrolling/scroll-max-value_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/querySelector-in-range-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/querySelector-leftmost-selector-matches-ancestor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/querySelector-leftmost-selector-matches-rootNode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/querySelector-scope_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/specificity-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/style-sharing-adjacent-selector_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/selectors/style-sharing-last-child_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/parsing/parsing-shape-image-threshold_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/parsing/parsing-shape-lengths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/parsing/parsing-shape-margin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/parsing/parsing-shape-outside-none_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/parsing/parsing-shape-outside_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/parsing/parsing-shape-property-aliases_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-big-box-border-radius_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-right_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/speechsynthesis/speech-synthesis-cancel_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/speechsynthesis/speech-synthesis-speak_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/speechsynthesis/speech-synthesis-voices_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/storage/disallowed-storage_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/storage/storage-disallowed-in-data-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/auto-table-layout-should-avoid-text-wrapping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/block-preferred-widths-with-sub-pixel-floats_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/boundingclientrect-subpixel-margin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/client-and-offset-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/computedstylemargin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/cssom-subpixel-precision_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/float-containing-block-with-margin_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/float-list-inside_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/float-percentage-widths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/float-with-margin-in-container_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/float-with-right-margin-zoom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/inline-block-with-padding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/layout-boxes-with-zoom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/replaced-element-baseline_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/shadows-computed-style_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/size-of-span-with-different-positions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/table-cells-have-stable-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/table-cells-with-padding-do-not-wrap_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/table-rows-have-stable-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/tiled-canvas-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/sub-pixel/vertical-align-middle-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/getbbox_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/tabindex-focus_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/whitespace-angle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/whitespace-integer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/whitespace-length-invalid_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/whitespace-length_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/svg/whitespace-number_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/absolute-table-percent-lengths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/anonymous-table-section-removed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/auto-table-layout-colgroup-removal-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/before-child-non-table-section-add-table-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/border-changes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/caption-orthogonal-writing-mode-sizing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/col-width-span-expand_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/columngroup-inside-columngroup_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/css-table-max-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/css-table-max-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/css-table-width-with-border-padding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/css-table-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/fixed-table-layout-toggle-colwidth_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/fixed-table-layout-width-change_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/fixed-table-with-percent-width-inside-extra-large-div_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/form-with-non-table-display-inside-table-elements_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/hittest-tablecell-right-edge_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/hittest-tablecell-with-borders-bottom-edge_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/hittest-tablecell-with-borders-right-edge_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/html-table-width-max-width-constrained_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/incorrect-colgroup-span-values_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/large-shrink-wrapped-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/margins-flipped-text-direction_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/margins-perpendicular-containing-block_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/min-max-width-preferred-size_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/min-width-css-block-table_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/min-width-css-inline-table_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/min-width-html-block-table_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/min-width-html-inline-table_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/nested-tables-with-div-offset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/padding-height-and-override-height_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/prepend-in-anonymous-table_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/resize-table-binding-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/resize-table-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/resize-table-row_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/rowindex-comment-nodes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/switch-table-layout-multiple-section_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/switch-table-layout_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-cell-offset-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-colgroup-present-after-table-row_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-rowspan-cell-with-empty-cell_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-sections-border-spacing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-size-integer-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-width-exceeding-max-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-with-borderattr-null_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-with-borderattr-set-to-null_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/table-with-content-width-exceeding-max-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/table/td-bordercolor-attribute_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text-autosizing/display-type-change-lineHeight_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text-autosizing/inline-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text-autosizing/table-inline-width_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text-autosizing/text-removal_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text-autosizing/vertical-writing-mode_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/container-align-with-inlines_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/decomposed-after-stacked-diacritics_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-backwards_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-case-folding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-hidden-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-kana_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-quotes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-russian_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-soft-hyphen_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/find-spaces_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/font-fallback-synthetic-italics_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/font-ligature-letter-spacing_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/font-ligatures-linebreak-word_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/font-ligatures-linebreak_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/font-linux-normalize_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/font-size-zero_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/glyph-reordering_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/cjk-segmentation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/combining-marks-position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/complex-text-rectangle_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/iso-8859-8_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/listbox-width-rtl_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/rtl-text-wrapping_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/international/thai-offsetForPosition-inside-character_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/ipa-tone-letters_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/justification-padding-mid-word_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-break-after-empty-inline-hebrew_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-break-after-inline-latin1_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-break-after-question-mark_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-breaks-after-closing-punctuations_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-breaks-after-ideographic-comma-or-full-stop_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/line-breaks-after-ideographic-comma-or-full-stop_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/multiglyph-characters_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/offsetForPosition-cluster-at-zero_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/pre-wrap-trailing-tab_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/regional-indicator-symobls_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/remove-zero-length-run_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/selection-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/soft-hyphen-5_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/split-text-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/sub-pixel/text-scaling-ltr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/sub-pixel/text-scaling-pixel_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/sub-pixel/text-scaling-rtl_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/sub-pixel/text-scaling-vertical_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/sub-pixel/text-scaling-webfont_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/text-between-two-brs-in-nowrap-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/text-combine-first-line-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/text-fragment-first-letter-update-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/whitespace/nowrap-line-break-after-white-space_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/window-find_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/zero-width-characters-complex-script_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/text/zero-width-characters_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/tokenizer/doctype-search-reset_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/tokenizer/entities_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/tokenizer/entities_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/tokenizer/entities_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/transforms/bounding-rect-zoom_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/transforms/hit-test-large-scale_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/transforms/scrollIntoView-transformed_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/transforms/topmost-becomes-bottomost-for-scrolling_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/transforms/transform-hit-test-flipped_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/transforms/transform-inside-overflow-scroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/anchor_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/file-http-base_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/file_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/host-lowercase-per-scheme_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/host_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/idna2003_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/idna2008_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/invalid-urls-utf8_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/ipv4_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/ipv6_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/mailto_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/path-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/path_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/port_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/query_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/relative-unix_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/relative-win_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/relative_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/safari-extension_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/scheme_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/segments-from-data-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/segments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/standard-url_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/trivial-segments_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/url/trivial_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/auto-margins-across-boundaries_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/auto-sizing-orthogonal-flows_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/block-formatting-context_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/broken-ideographic-font_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/display-mutation_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow-scroll_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/flipped-blocks-text-map-local-to-container_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/percentage-margins-absolute-replaced_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/percentage-padding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/positionForPoint_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/relative-positioning-percentages_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/table-hit-test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/vertical-font-vmtx-units-per-em_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/writing-mode/vertical-inline-block-hittest_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/null-document-xmlhttprequest-open_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-bad-mimetype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-get_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-html-response-encoding_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-abort_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-document_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-set-at-headers-received_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-text_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-set-responsetype_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-withcredentials-before-open_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Borrowed/cz_20030217_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Borrowed/kd_20010423_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Borrowed/namespace-nodes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Borrowed/od_20000608_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Borrowed/rs_20010831_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Borrowed/sr_20021217_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_boolean_expr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_literal_expr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_location_path_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_nodeset_expr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_numeric_expr_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_predicate_list_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/4XPath/Core/test_step_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/ambiguous-operators_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/attr-namespace_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/attr-namespace_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/attribute-node-predicate_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/detached-subtree-invalidate-iterator_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/evaluator-exceptions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/implicit-node-args_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/invalid-resolver_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/nan-to-boolean_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/node-name-case-sensitivity_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/node-name-case-sensitivity_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/py-dom-xpath/axes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/py-dom-xpath/data_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/py-dom-xpath/paths_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/reverse-axes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/substring-after_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/substring-nan-position_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/substring-non-positive-postion_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/xpath-detached-nodes_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xpath/xpath-template-element_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xsl/nbsp-in-stylesheet_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xsl/transformToFragment-XML-declaration_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xsl/xslt-bad-import-uri_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xsl/xslt-fragment-in-empty-doc_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LayoutTests/fast/xsl/xslt-transform-to-fragment-crash_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Future/Future.delayed_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Future/Future.delayed_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Zone/ROOT_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Zone/parent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/collection/DoubleLinkedQueueEntry/hashCode_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/AsciiDecoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/AsciiDecoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/AsciiDecoder/startChunkedConversion_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/Base64Decoder_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/convert_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/fuse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/Base64Encoder.urlSafe_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/Base64Encoder_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ByteConversionSink/ByteConversionSink.from_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ByteConversionSink/ByteConversionSink.withCallback_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ByteConversionSink/ByteConversionSink_class_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ChunkedConversionSink/ChunkedConversionSink.withCallback_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/convert_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/fuse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/mode_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/JsonUtf8Encoder_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/JsonUtf8Encoder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/JsonUtf8Encoder_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/convert_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/convert_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/convert_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/startChunkedConversion_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Latin1Decoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Latin1Decoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Latin1Decoder/startChunkedConversion_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/StringConversionSink.fromStringSink_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/StringConversionSink.from_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/StringConversionSink.withCallback_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/addSlice_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/addSlice_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/add_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asStringSink_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asStringSink_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Codec/decode_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Codec/decode_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/convert_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/convert_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/fuse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/startChunkedConversion_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Encoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/DateTime/month_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/DateTime/weekday_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/HOURS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_MILLISECOND_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_MINUTE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_SECOND_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/ZERO_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/isNegative_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/static_properties_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromString_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri_A06_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri_A06_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeComponent_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeFull_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeQueryComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeFull_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeQueryComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeQueryComponent_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromString_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/toString_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/ceilToDouble_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/ceil_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/ceil_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/clamp_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/compareTo_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/compareTo_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/floorToDouble_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/floor_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/floor_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/isInfinite_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GE_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GE_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GT_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GT_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LE_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LE_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LT_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LT_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A01_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_remainder_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_remainder_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_unary_minus_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_unary_minus_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/parse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/remainder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/remainder_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/remainder_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/roundToDouble_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/roundToDouble_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/round_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/round_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toInt_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toInt_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsExponential_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsExponential_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsFixed_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsFixed_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsPrecision_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsPrecision_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncateToDouble_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncateToDouble_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncate_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncate_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/clamp_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/compareTo_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_GE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_GT_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_LE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_LT_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_addition_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_division_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_division_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_remainder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_subtraction_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/remainder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/addCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/addProxyCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticateProxy_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticateProxy_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticateProxy_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticate_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticate_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticate_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A04_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A04_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/deleteUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/deleteUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/delete_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/delete_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/getUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/getUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/get_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/get_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/headUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/headUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/head_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/head_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/idleTimeout_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patchUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patchUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patch_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patch_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/postUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/postUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/post_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/post_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/putUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/putUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/put_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/put_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/userAgent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/userAgent_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientBasicCredentials/HttpClientBasicCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientDigestCredentials/HttpClientDigestCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addError_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addStream_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addStream_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addStream_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/bufferOutput_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/bufferOutput_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/close_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/connectionInfo_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/contentLength_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/contentLength_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/cookies_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/done_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/encoding_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/encoding_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/encoding_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/flush_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/flush_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/flush_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/method_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/persistentConnection_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/uri_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/certificate_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/connectionInfo_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/detachSocket_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/isRedirect_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/reasonPhrase_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/reasonPhrase_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/reasonPhrase_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/redirects_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/redirects_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/statusCode_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/statusCode_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/statusCode_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/HttpServer.listenOn_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/autoCompress_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/autoCompress_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/autoCompress_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/connectionsInfo_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/IOSink_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/add_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/encoding_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/write_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/write_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/ProcessSignal/watch_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeStringSync_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeStringSync_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeString_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeString_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdin/readLineSync_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdin/readLineSync_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdin/readLineSync_A03_t03: CompileTimeError # Erroneously awaits void
-LibTest/io/Stdin/readLineSync_A03_t04: CompileTimeError # Erroneously awaits void
-LibTest/io/Stdin/readLineSync_A04_t01: CompileTimeError # Erroneously awaits void
-LibTest/io/Stdout/add_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/encoding_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/writeAll_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/write_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/errors_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/errors_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t08: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t10: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeOnExitListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeOnExitListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A04_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A04_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/terminateCapability_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/terminateCapability_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/terminateCapability_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/RawReceivePort/handler_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/SendPort/send_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/MutableRectangle_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/MutableRectangle_A03_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/MutableRectangle_A03_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/height_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/height_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/height_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/width_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/width_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/width_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/Point_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/magnitude_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/operator_equality_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/operator_equality_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/operator_equality_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/x_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/y_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/Rectangle_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/Rectangle_A03_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/Rectangle_A03_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/acos_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/acos_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/asin_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/asin_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/cos_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/exp_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/exp_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/log_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/max_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/max_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/min_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/min_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A07_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A08_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A09_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A10_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A11_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A11_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A12_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A12_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A13_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A14_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A15_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A16_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A16_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A17_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sin_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sqrt_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sqrt_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sqrt_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/tan_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32x4List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32x4List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32x4List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64x2List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64x2List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64x2List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt16List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt16List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt16List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32x4List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32x4List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32x4List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt64List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt64List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt64List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint16List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint16List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint16List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint32List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint32List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint32List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint64List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint64List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint64List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/ByteData.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getFloat32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getFloat64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setFloat32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setFloat64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/Float32List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/Float32List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/Float32List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/Float64List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/Float64List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/Float64List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A05_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A05_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/elementSizeInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/offsetInBytes_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/setAll_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/Int16List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/Int16List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/Int16List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/Int32List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/Int32List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/Int32List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A05_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A05_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/elementSizeInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/setAll_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/Int64List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/Int64List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/Int64List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int8List/Int8List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int8List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/equals_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/identical_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/setEquals_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-WebPlatformTest/html/dom/elements/global-attributes/classlist-nonstring_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
+
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index 690bfef..a34a0b8 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -25,11 +25,6 @@
 Language/Classes/Constructors/Factories/default_value_t02: MissingCompileTimeError
 Language/Classes/Constructors/Factories/function_type_t01: MissingCompileTimeError
 Language/Classes/Constructors/Factories/function_type_t02: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t04: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t05: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t06: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t07: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t12: MissingCompileTimeError
 Language/Classes/Constructors/Generative_Constructors/initializers_t15: CompileTimeError
 Language/Classes/Constructors/name_t01: MissingCompileTimeError # Legal, see #33235
 Language/Classes/Constructors/name_t02: MissingCompileTimeError # Legal, see #33235
@@ -123,12 +118,7 @@
 Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t04: CompileTimeError
 Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t01: MissingCompileTimeError
 Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t02: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: MissingCompileTimeError
 Language/Expressions/Multiplicative_Expressions/syntax_t01: CompileTimeError
-Language/Expressions/Numbers/static_type_of_double_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Numbers/syntax_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Object_Identity/constant_objects_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Expressions/Object_Identity/double_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 Language/Expressions/Postfix_Expressions/syntax_t01: CompileTimeError
 Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t01: CompileTimeError
 Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_getter_t03: CompileTimeError
@@ -141,17 +131,10 @@
 Language/Expressions/Shift/syntax_t01: CompileTimeError
 Language/Expressions/Strings/String_Interpolation/double_quote_t02: CompileTimeError
 Language/Expressions/Strings/String_Interpolation/single_quote_t02: CompileTimeError
-Language/Expressions/This/placement_t04: MissingCompileTimeError
-Language/Expressions/Type_Cast/syntax_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 Language/Expressions/Unary_Expressions/syntax_t10: CompileTimeError
 Language/Expressions/Unary_Expressions/syntax_t27: CompileTimeError
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: MissingCompileTimeError
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: MissingCompileTimeError
-Language/Functions/async_return_type_t01: MissingCompileTimeError
-Language/Functions/generator_return_type_t01: MissingCompileTimeError
-Language/Functions/generator_return_type_t02: MissingCompileTimeError
-Language/Functions/generator_return_type_t05: MissingCompileTimeError
-Language/Functions/generator_return_type_t06: MissingCompileTimeError
 Language/Generics/scope_t06: MissingCompileTimeError
 Language/Generics/syntax_t02: CompileTimeError
 Language/Generics/syntax_t03: CompileTimeError
@@ -207,20 +190,82 @@
 Language/Types/Type_Void/returning_t05: MissingCompileTimeError
 Language/Types/Type_Void/syntax_t08: MissingCompileTimeError
 Language/Types/Type_Void/using_t01: MissingCompileTimeError
-Language/Variables/constant_initialization_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Language/Variables/constant_variable_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 Language/Variables/final_or_static_initialization_t02: MissingCompileTimeError
 Language/Variables/final_or_static_initialization_t03: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t03: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t04: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t05: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t06: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t07: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t08: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t09: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t10: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t12: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t13: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t14: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t15: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t17: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t18: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t20: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t21: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_l1_t01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_l1_t04: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_l1_t05: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_l2_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t03: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t04: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t05: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t06: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t07: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t08: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t09: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t03: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t04: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t05: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t06: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t07: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t08: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t09: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t03: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t04: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t05: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t06: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t07: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t08: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t09: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t02: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t03: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t04: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t05: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t06: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t07: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t08: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t09: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t11: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t12: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t13: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t14: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t15: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t16: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t17: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t18: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t20: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t21: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_l1_t02: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/interface/interface_neg_assign_l2_t01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/interface/interface_neg_assign_l2_t02: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/interface/interface_neg_l1_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/mixin/mixin_extends_neg_assign_l1_t01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/mixin/mixin_extends_neg_l1_t01: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_assign_l2_t01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_l1_t02: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_l1_t07: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_l2_t01: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/typedef_named_extends_neg_l1_t03: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/typedef_named_extends_neg_l2_t02: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/typedef_optparam_extends_neg_l1_t03: MissingCompileTimeError
@@ -232,689 +277,12 @@
 LanguageFeatures/Instantiate-to-bound/typedef/typedef_ret_extends_neg_l1_t04: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/typedef_ret_extends_neg_l1_t05: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/typedef/typedef_ret_extends_neg_l2_t02: MissingCompileTimeError
-LibTest/async/Future/Future.delayed_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Future/Future.delayed_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Zone/ROOT_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/async/Zone/parent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/collection/DoubleLinkedQueueEntry/hashCode_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 LibTest/collection/Maps/forEach_A01_t01: CompileTimeError
 LibTest/collection/Maps/forEach_A01_t03: CompileTimeError
 LibTest/collection/Maps/forEach_A01_t04: CompileTimeError
 LibTest/collection/Maps/forEach_A01_t05: CompileTimeError
 LibTest/collection/Maps/forEach_A01_t06: CompileTimeError
 LibTest/collection/Maps/forEach_A02_t01: CompileTimeError
-LibTest/convert/AsciiDecoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/AsciiDecoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/AsciiDecoder/startChunkedConversion_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/Base64Decoder_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/convert_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/fuse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Decoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/Base64Encoder.urlSafe_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/Base64Encoder_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Base64Encoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ByteConversionSink/ByteConversionSink.from_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ByteConversionSink/ByteConversionSink.withCallback_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ByteConversionSink/ByteConversionSink_class_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/ChunkedConversionSink/ChunkedConversionSink.withCallback_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/HtmlEscape_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/convert_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/fuse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/HtmlEscape/mode_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/JsonUtf8Encoder_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/JsonUtf8Encoder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/JsonUtf8Encoder_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/convert_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/convert_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/convert_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/JsonUtf8Encoder/startChunkedConversion_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Latin1Decoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Latin1Decoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Latin1Decoder/startChunkedConversion_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/StringConversionSink.fromStringSink_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/StringConversionSink.from_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/StringConversionSink.withCallback_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/addSlice_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/addSlice_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/add_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asStringSink_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asStringSink_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/asUtf8Sink_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/StringConversionSink/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Codec/decode_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Codec/decode_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/convert_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/convert_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/fuse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/startChunkedConversion_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Decoder/startChunkedConversion_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/convert/Utf8Encoder/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/DateTime/month_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/DateTime/weekday_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/HOURS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_MILLISECOND_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_MINUTE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MICROSECONDS_PER_SECOND_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/ZERO_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/isNegative_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Duration/static_properties_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromBytes_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri.dataFromString_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri_A06_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/Uri_A06_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeComponent_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeFull_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/decodeQueryComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeFull_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeQueryComponent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/Uri/encodeQueryComponent_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromBytes_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/UriData.fromString_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/UriData/toString_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/INFINITY_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NAN_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/NEGATIVE_INFINITY_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/ceilToDouble_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/ceil_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/ceil_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/clamp_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/compareTo_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/compareTo_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/floorToDouble_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/floor_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/floor_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/isInfinite_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GE_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GE_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GT_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_GT_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LE_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LE_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LT_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_LT_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A01_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_addition_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A01_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_division_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_multiplication_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_remainder_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_remainder_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_subtraction_A01_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_truncating_division_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_unary_minus_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/operator_unary_minus_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/parse_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/remainder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/remainder_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/remainder_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/roundToDouble_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/roundToDouble_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/round_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/round_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toInt_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toInt_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsExponential_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsExponential_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsFixed_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsFixed_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsPrecision_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/toStringAsPrecision_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncateToDouble_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncateToDouble_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncate_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/double/truncate_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/clamp_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/compareTo_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_GE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_GT_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_LE_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_LT_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_addition_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_division_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_division_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_remainder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/operator_subtraction_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/core/int/remainder_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/addCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/addProxyCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticateProxy_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticateProxy_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticateProxy_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticate_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticate_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/authenticate_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A04_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/autoUncompress_A04_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/deleteUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/deleteUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/delete_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/delete_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A02_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxyFromEnvironment_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/findProxy_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/getUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/getUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/get_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/get_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/headUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/headUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/head_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/head_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/idleTimeout_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/openUrl_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/open_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patchUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patchUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patch_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/patch_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/postUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/postUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/post_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/post_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/putUrl_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/putUrl_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/put_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/put_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/userAgent_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClient/userAgent_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientBasicCredentials/HttpClientBasicCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientDigestCredentials/HttpClientDigestCredentials_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addError_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addStream_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addStream_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/addStream_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/add_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/bufferOutput_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/bufferOutput_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/close_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/connectionInfo_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/contentLength_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/contentLength_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/cookies_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/done_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/encoding_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/encoding_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/encoding_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/flush_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/flush_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/flush_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/followRedirects_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/headers_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/maxRedirects_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/method_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/persistentConnection_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientRequest/uri_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/certificate_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/connectionInfo_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/contentLength_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/detachSocket_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/isRedirect_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/persistentConnection_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/reasonPhrase_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/reasonPhrase_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/reasonPhrase_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/redirects_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/redirects_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/statusCode_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/statusCode_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpClientResponse/statusCode_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/HttpServer.listenOn_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/autoCompress_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/autoCompress_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/autoCompress_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/bind_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/close_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/HttpServer/connectionsInfo_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/IOSink_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/add_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/encoding_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/write_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/IOSink/write_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/ProcessSignal/watch_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeStringSync_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeStringSync_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeString_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/RandomAccessFile/writeString_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdin/readLineSync_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdin/readLineSync_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/add_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/encoding_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/writeAll_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/io/Stdout/write_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addErrorListener_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/addOnExitListener_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/errors_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/errors_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/kill_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pauseCapability_A02_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t08: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t09: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A01_t10: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/pause_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/ping_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeErrorListener_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeOnExitListener_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/removeOnExitListener_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/resume_A03_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/setErrorsFatal_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A04_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A04_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A05_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawnUri_A07_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A04_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t05: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t06: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/spawn_A06_t07: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/terminateCapability_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/terminateCapability_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/Isolate/terminateCapability_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/RawReceivePort/handler_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/SendPort/send_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/MutableRectangle_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/MutableRectangle_A03_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/MutableRectangle_A03_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/height_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/height_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/height_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/operator_equality_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/width_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/width_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/MutableRectangle/width_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/Point_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/magnitude_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/operator_equality_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/operator_equality_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/operator_equality_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/x_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Point/y_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/Rectangle_A03_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/Rectangle_A03_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/Rectangle_A03_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/Rectangle/operator_equality_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/acos_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/acos_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/asin_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/asin_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan2_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/atan_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/cos_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/exp_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/exp_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/log_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/max_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/max_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/min_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/min_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A07_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A08_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A09_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A10_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A11_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A11_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A12_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A12_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A13_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A14_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A15_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A16_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A16_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/pow_A17_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sin_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sqrt_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sqrt_A02_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/sqrt_A02_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/math/tan_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32x4List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32x4List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat32x4List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64x2List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64x2List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asFloat64x2List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt16List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt16List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt16List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32x4List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32x4List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt32x4List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt64List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt64List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asInt64List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint16List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint16List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint16List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint32List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint32List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint32List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint64List_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint64List_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteBuffer/asUint64List_A03_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/ByteData.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getFloat32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getFloat64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getInt8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/getUint8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setFloat32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setFloat64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setInt8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint16_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint32_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint64_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/ByteData/setUint8_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/Float32List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/Float32List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/Float32List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/Float64List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/Float64List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/Float64List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A05_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A05_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A05_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/Float64x2List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/elementSizeInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/offsetInBytes_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Float64x2List/setAll_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/Int16List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/Int16List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/Int16List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int16List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/Int32List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/Int32List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/Int32List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A05_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A05_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/Int32x4List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/elementSizeInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int32x4List/setAll_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/Int64List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/Int64List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/Int64List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int64List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int8List/Int8List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Int8List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/buffer_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t03: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A02_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/approxEquals_A04_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/equals_A01_t04: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/identical_A01_t01: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
-Utils/tests/Expect/setEquals_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 
 [ $strong && ($compiler == dartk || $compiler == dartkb) ]
 Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: Crash
@@ -1472,5 +840,4 @@
 LibTest/typed_data/Uint8List/every_A01_t01: RuntimeError
 LibTest/typed_data/Uint8List/first_A01_t02: RuntimeError
 LibTest/typed_data/Uint8List/last_A01_t02: RuntimeError
-Utils/tests/Expect/setEquals_A01_t02: CompileTimeError # Dart 1 constants, https://github.com/dart-lang/sdk/issues/33894
 Utils/tests/Expect/throws_A01_t04: RuntimeError
diff --git a/tests/compiler/dart2js/model/class_set_test.dart b/tests/compiler/dart2js/model/class_set_test.dart
index 95f5ed5..da0633f 100644
--- a/tests/compiler/dart2js/model/class_set_test.dart
+++ b/tests/compiler/dart2js/model/class_set_test.dart
@@ -404,7 +404,6 @@
     List<ClassEntity> visited = <ClassEntity>[];
     classSet.forEachSubclass((cls) {
       visited.add(cls);
-      return null;
     }, ClassHierarchyNode.ALL);
 
     Expect.listEquals(
@@ -442,7 +441,6 @@
     List<ClassEntity> visited = <ClassEntity>[];
     classSet.forEachSubtype((cls) {
       visited.add(cls);
-      return null;
     }, ClassHierarchyNode.ALL);
 
     Expect.listEquals(
diff --git a/tests/compiler/dart2js/model/constant_expression_evaluate_test.dart b/tests/compiler/dart2js/model/constant_expression_evaluate_test.dart
index 7d8c5ac..c347ba0 100644
--- a/tests/compiler/dart2js/model/constant_expression_evaluate_test.dart
+++ b/tests/compiler/dart2js/model/constant_expression_evaluate_test.dart
@@ -164,6 +164,8 @@
     const ConstantData('identical', 'FunctionConstant(identical)'),
     const ConstantData('true ? 0 : 1', 'IntConstant(0)'),
     const ConstantData('proxy', 'ConstructedConstant(_Proxy())'),
+    const ConstantData('const [] == null', 'BoolConstant(false)'),
+    const ConstantData('proxy == null', 'BoolConstant(false)'),
     const ConstantData('Object', 'TypeConstant(Object)'),
     const ConstantData('null ?? 0', 'IntConstant(0)'),
     const ConstantData(
@@ -414,10 +416,6 @@
         expectedErrors: MessageKind.INVALID_CONSTANT_ADD_TYPES),
     const ConstantData('boolean + false', 'NonConstant',
         expectedErrors: MessageKind.INVALID_CONSTANT_ADD_TYPES),
-    const ConstantData('const [] == null', 'NonConstant',
-        expectedErrors: MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE),
-    const ConstantData('proxy == null', 'NonConstant',
-        expectedErrors: MessageKind.INVALID_CONSTANT_BINARY_PRIMITIVE_TYPE),
     const ConstantData('0 * ""', 'NonConstant',
         expectedErrors: MessageKind.INVALID_CONSTANT_BINARY_NUM_TYPE),
     const ConstantData('0 * string', 'NonConstant',
diff --git a/tests/compiler/dart2js/model/world_test.dart b/tests/compiler/dart2js/model/world_test.dart
index 14da865..a4b49ce 100644
--- a/tests/compiler/dart2js/model/world_test.dart
+++ b/tests/compiler/dart2js/model/world_test.dart
@@ -99,7 +99,6 @@
       List<ClassEntity> visited = <ClassEntity>[];
       forEach(cls, (ClassEntity c) {
         visited.add(c);
-        return null;
       });
       checkClasses('forEach($property)', cls, visited, expectedClasses,
           exact: exact);
@@ -425,7 +424,6 @@
       if (allClasses.contains(other)) {
         strictSubclasses.add(other);
       }
-      return null;
     });
     Expect.setEquals(subclasses, strictSubclasses,
         "Unexpected strict subclasses of $cls: ${strictSubclasses}.");
@@ -435,7 +433,6 @@
       if (allClasses.contains(other)) {
         strictSubtypes.add(other);
       }
-      return null;
     });
     Expect.setEquals(subtypes, strictSubtypes,
         "Unexpected strict subtypes of $cls: $strictSubtypes.");
diff --git a/tests/compiler/dart2js/receiver_type_test.dart b/tests/compiler/dart2js/receiver_type_test.dart
index 26bacc4..d8ad1ac 100644
--- a/tests/compiler/dart2js/receiver_type_test.dart
+++ b/tests/compiler/dart2js/receiver_type_test.dart
@@ -49,7 +49,7 @@
   Selector callSelector = new Selector.callClosure(0);
   closedWorld.classHierarchy.forEachStrictSubclassOf(
       closedWorld.commonElements.objectClass, (ClassEntity cls) {
-    if (cls.library.canonicalUri.scheme != 'memory') return null;
+    if (cls.library.canonicalUri.scheme != 'memory') return;
 
     TypeMask mask = new TypeMask.nonNullSubclass(cls, closedWorld);
     TypeMask receiverType = closedWorld.computeReceiverType(callSelector, mask);
@@ -65,7 +65,6 @@
       Expect.equals(expected, '$receiverType',
           "Unexpected receiver type for $callSelector on $mask");
     }
-    return null;
   });
 
   Expect.equals(2, closureCount);
diff --git a/tests/compiler/dart2js/sourcemaps/helpers/sourcemap_helper.dart b/tests/compiler/dart2js/sourcemaps/helpers/sourcemap_helper.dart
index 3e52e3a..270e686 100644
--- a/tests/compiler/dart2js/sourcemaps/helpers/sourcemap_helper.dart
+++ b/tests/compiler/dart2js/sourcemaps/helpers/sourcemap_helper.dart
@@ -254,7 +254,6 @@
         }
         return null;
       }
-      return null;
     });
   }
 }
diff --git a/tests/compiler/dart2js_extra/constant_javascript_semantics_test5.dart b/tests/compiler/dart2js_extra/constant_javascript_semantics_test5.dart
new file mode 100644
index 0000000..e2275ea
--- /dev/null
+++ b/tests/compiler/dart2js_extra/constant_javascript_semantics_test5.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "package:expect/expect.dart";
+
+// Make sure we can assert(const Foo() != null) in const initializers.
+class Color {
+  const Color(this.value);
+  final int value;
+}
+
+class ColorHaver {
+  const ColorHaver({this.color = const Color(0xFF000000)})
+      : assert(color != null);
+  final Color color;
+}
+
+const c = const ColorHaver(color: const Color(0xFF00FF00));
+
+enum Enum {
+  a,
+  b,
+}
+
+class EnumHaver {
+  const EnumHaver({this.myEnum: Enum.a}) : assert(myEnum != null);
+  final Enum myEnum;
+}
+
+const e = const EnumHaver(myEnum: Enum.b);
+
+main() {
+  Expect.equals(c.value, 0xFF00FF00);
+  Expect.equals(e.myEnum, Enum.b);
+}
diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status
index e0ee912..dda114e 100644
--- a/tests/corelib_2/corelib_2.status
+++ b/tests/corelib_2/corelib_2.status
@@ -585,6 +585,7 @@
 symbol_reserved_word_test/12: RuntimeError # Issue 29921
 symbol_test/none: RuntimeError # Issue 29921
 typed_data_with_limited_ints_test: Skip # Requires fixed-size int64 support.
+uri_test: Pass, Slow
 uri_parse_test: Pass, Slow
 
 [ $compiler == precompiler || $runtime == vm && !$checked && !$strong ]
diff --git a/tests/isolate/isolate.status b/tests/isolate/isolate.status
index abe73a9..db0a720 100644
--- a/tests/isolate/isolate.status
+++ b/tests/isolate/isolate.status
@@ -35,9 +35,6 @@
 browser/package_resolve_browser_hook_test: SkipByDesign # Test written in a way that violates CSP.
 deferred_in_isolate2_test: Skip # Issue 16898. Deferred loading does not work from an isolate in CSP-mode
 
-[ $fasta ]
-compile_time_error_test/01: MissingCompileTimeError
-
 [ $jscl ]
 spawn_uri_multi_test/none: RuntimeError # Issue 13544
 
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
index 14f9fb6..bac34af 100644
--- a/tests/language/language_dart2js.status
+++ b/tests/language/language_dart2js.status
@@ -316,7 +316,6 @@
 constructor6_test: RuntimeError
 constructor_call_as_function_test/01: MissingRuntimeError
 constructor_named_arguments_test/none: RuntimeError
-constructor_redirect_test/01: Crash # Assertion failure: Cannot find value Instance of 'ThisLocal' in (local(A.named2#x), local(A.named2#y), local(A.named2#z)) for j:constructor(A.named2).
 deferred_constraints_constants_test/none: RuntimeError
 deferred_constraints_constants_test/reference_after_load: RuntimeError
 deferred_inheritance_constraints_test/extends: MissingCompileTimeError
diff --git a/tests/language/language_kernel.status b/tests/language/language_kernel.status
index e89a8c5..29ebc2a 100644
--- a/tests/language/language_kernel.status
+++ b/tests/language/language_kernel.status
@@ -28,7 +28,6 @@
 const_map2_test/00: MissingCompileTimeError
 const_map3_test/00: MissingCompileTimeError
 const_switch2_test/01: MissingCompileTimeError
-constructor_redirect_test/01: MissingCompileTimeError
 deferred_inheritance_constraints_test/extends: MissingCompileTimeError
 deferred_inheritance_constraints_test/implements: MissingCompileTimeError
 deferred_inheritance_constraints_test/mixin: MissingCompileTimeError
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 493ee91..3473030 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -7,26 +7,18 @@
 mixin_constructor_forwarding/optional_named_parameters_test/none: CompileTimeError # Issue 31543
 mixin_constructor_forwarding/optional_positional_parameters_test/none: CompileTimeError # Issue 31543
 
-[ $compiler == dart2analyzer ]
-void/*: Skip  # https://github.com/dart-lang/sdk/issues/34010
-invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34010
+[ $compiler == dart2analyzer && $fasta ]
+void/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
+invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
 
 [ $compiler == dart2js ]
 void/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
 invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
 
-[ $compiler == dartdevc || $compiler == dartdevk ]
-void/*: Skip # https://github.com/dart-lang/sdk/issues/34012
-invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34012
-
-[ $compiler == app_jit || $compiler == app_jitk || $compiler == none ]
+[ $compiler == app_jit || $compiler == none ]
 void/*: Skip # https://github.com/dart-lang/sdk/issues/34013
 invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34013
 
-[ $compiler == dartk || $compiler == dartkb || $compiler == dartkp || $compiler == fasta ]
-void/*: Skip # https://github.com/dart-lang/sdk/issues/34014
-invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34014
-
 [ $compiler == spec_parser ]
 void/*: Skip # https://github.com/dart-lang/sdk/issues/34015
 invalid_returns/*: Skip # https://github.com/dart-lang/sdk/issues/34015
diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status
index 5b80d54..6d1d6c5 100644
--- a/tests/language_2/language_2_analyzer.status
+++ b/tests/language_2/language_2_analyzer.status
@@ -8,10 +8,6 @@
 mock_writable_final_private_field_test: CompileTimeError # Issue 30848
 vm/reflect_core_vm_test: CompileTimeError # Issue 30848
 
-[ $compiler == dart2analyzer && $runtime == none && !$fasta ]
-error_stacktrace_test/00: MissingCompileTimeError
-vm/lazy_deopt_with_exception_test: CompileTimeError
-
 [ $compiler == dart2analyzer && $analyzer_use_fasta_parser ]
 multiline_newline_test/01: Pass
 multiline_newline_test/01r: Pass
@@ -22,42 +18,461 @@
 multiline_newline_test/05: Pass
 multiline_newline_test/05r: Pass
 regress_29349_test: Pass
+void/generalized_void_syntax_test: Pass
+void/void_type_function_types_test/none: Pass 
 
 [ $compiler == dart2analyzer && !$analyzer_use_fasta_parser && !$fasta ]
 constructor_type_parameter_test/00: MissingCompileTimeError # Issue 33110
 constructor_with_type_parameters_test/03: MissingCompileTimeError
 
 [ $compiler == dart2analyzer && $fasta ]
+arg_param_trailing_comma_test/100: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/138: Crash # Error recovery in method body (synthetic argument)
+arg_param_trailing_comma_test/147: Crash # Error recovery in method body (synthetic argument)
+arg_param_trailing_comma_test/156: Crash # Error recovery in method body (synthetic argument)
+arg_param_trailing_comma_test/165: Crash # Error recovery in method body (synthetic argument)
+arg_param_trailing_comma_test/166: Crash # Error recovery in method body (invalid assignment)
+arg_param_trailing_comma_test/24: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/25: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/26: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/72: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/73: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/74: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/98: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+arg_param_trailing_comma_test/99: Crash # Issue #34043 - Error recovery in outline (extraneous comma before formal parameter)
+assign_to_type_test/01: Crash # Error recovery in method body (invalid assignment)
+assign_to_type_test/02: Crash # Error recovery in method body (invalid assignment)
+assign_to_type_test/03: Crash # Error recovery in method body (invalid assignment)
+assign_to_type_test/04: Crash # Error recovery in method body (invalid assignment)
+black_listed_test/02: Crash # Issue 33686 - No core library found
+black_listed_test/04: Crash # Issue 33686 - No core library found
+black_listed_test/06: Crash # Issue 33686 - No core library found
+black_listed_test/08: Crash # Issue 33686 - No core library found
+black_listed_test/10: Crash # Issue 33686 - No core library found
+black_listed_test/12: Crash # Issue 33686 - No core library found
+black_listed_test/14: Crash # Issue 33686 - No core library found
+built_in_identifier_illegal_test/implements: Crash # Issue #34043 - Error recovery in outline (synthetic token used where type expected)
+built_in_identifier_illegal_test/part: Crash # No resolution for a file
+built_in_identifier_illegal_test/typedef: Crash # Issue 33686 - No core library found
+built_in_identifier_type_annotation_test/part: Crash # No resolution for a file
+built_in_identifier_type_annotation_test/set: Crash # Issue #34043 - Error recovery in outline
+built_in_identifier_type_annotation_test/set-funret: Crash # Issue #34043 - Error recovery in outline
+call_nonexistent_static_test/10: Crash # Error recovery in method body (attempt to read from setter)
+case_expression_with_assignment_test/01: Crash # Error recovery in method body (assignment to constant)
+class_cycle2_test/01: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+class_cycle2_test/02: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+class_cycle_test/00: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+class_cycle_test/01: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+class_cycle_test/02: MissingCompileTimeError
+class_cycle_test/03: MissingCompileTimeError
+class_literal_static_test/12: Crash # Error recovery in method body (invalid assignment)
+class_literal_static_test/13: Crash # Error recovery in method body (invalid assignment)
+class_literal_static_test/24: Crash # Error recovery in method body (invalid assignment)
+class_literal_test/12: Crash # Error recovery in method body (invalid assignment)
+class_literal_test/13: Crash # Error recovery in method body (invalid assignment)
+class_literal_test/24: Crash # Error recovery in method body (invalid assignment)
 compile_time_constant_static5_test/11: CompileTimeError # Issue 31537
 compile_time_constant_static5_test/16: CompileTimeError # Issue 31537
 compile_time_constant_static5_test/21: CompileTimeError # Issue 31537
 compile_time_constant_static5_test/23: CompileTimeError # Issue 31402
+conditional_property_assignment_test/20: Crash # Error recovery in method body (invalid assignment)
+conditional_property_assignment_test/21: Crash # Error recovery in method body (invalid assignment)
+conditional_property_assignment_test/22: Crash # Error recovery in method body (invalid assignment)
+config_import_corelib_test: CompileTimeError # Issue 34047
+conflicting_generic_interfaces_hierarchy_loop_infinite_test: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+conflicting_generic_interfaces_hierarchy_loop_test: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+const_counter_test/01: Crash # Error recovery in method body (use of non-const closure in a const context)
+const_native_factory_test: Crash # Issue #34043 - Error recovery in outline (native const factory)
+constructor9_test/01: MissingStaticWarning
+constructor_name_test/02: Crash # Issue #34043 - Error recovery in outline (illegal constructor name)
+constructor_named_arguments_test/01: Crash # Error recovery in method body (argument mismatch in constructor redirect)
+constructor_redirect2_test/02: Crash # Issue 33686 - No core library found
+constructor_redirect2_test/03: Crash # Issue 33686 - No core library found
+constructor_redirect2_test/04: Crash # Issue 33686 - No core library found
+constructor_redirect_test/01: Crash # Error recovery in method body (reference to non-static method in constructor initializer)
+covariant_override_test: Crash # Improper handling of correct code - override fails to appear in kernel representation
+covariant_subtyping_test: Crash # Improper handling of correct code - problem with function-typed parameters in a generic class
+crash_6725_test/01: Crash # Error recovery in method body (mishandling of improper for-in variable)
+cyclic_class_member_test/01: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+deep_nesting_statement_test/01: Crash # Error recovery in method body (deep nesting causes method to disappear)
+deferred_load_library_wrong_args_test/01: CompileTimeError # Issue 34047
+duplicate_constructor_test/01: Crash # Issue 33686 - No core library found
+duplicate_field_with_initializer_test/01: Crash # Issue 33686 - No core library found
+duplicate_implements_test/01: MissingCompileTimeError
+duplicate_implements_test/02: MissingCompileTimeError
+duplicate_interface_implements_test/01: MissingCompileTimeError
+dynamic_prefix_core_test/none: CompileTimeError # Issue 34047
+emit_const_fields_test: CompileTimeError # Issue 34047
+enum_syntax_test/02: Crash # Issue #34043 - Error recovery in outline (duplicate enum name)
+enum_syntax_test/03: Crash # Issue #34043 - Error recovery in outline (enum name collision)
+enum_syntax_test/04: Crash # Issue #34043 - Error recovery in outline (enum name collision)
+enum_syntax_test/05: Crash # Issue #34043 - Error recovery in outline (enum name collision)
+enum_syntax_test/06: Crash # Issue #34043 - Error recovery in outline (enum name collision)
+enum_syntax_test/09: Crash # Issue 33686 - No core library found
+enum_syntax_test/10: Crash # Issue 33686 - No core library found
+enum_syntax_test/11: Crash # Issue 33686 - No core library found
+enum_syntax_test/30: Crash # Error recovery in method body (attempt to instantiate an enum)
+export_ambiguous_main_test: MissingCompileTimeError
+external_test/21: CompileTimeError # Issue 34047
+external_test/24: CompileTimeError # Issue 34047
+factory2_test/01: Crash # Issue #34043 - Error recovery in outline (illegal constructor name)
+factory_test/00: Crash # Issue #34043 - Error recovery in outline (illegal constructor name)
+factory_with_type_parameters_test/03: Crash # Issue 33686 - No core library found
+factory_with_type_parameters_test/04: Crash # Issue 33686 - No core library found
+field1_test: Crash # Issue 33686 - No core library found
+field2_test: Crash # Issue 33686 - No core library found
+field4_test: Crash # Issue 33686 - No core library found
+field5_test: Crash # Issue 33686 - No core library found
+field6_test/00: Crash # Issue 33686 - No core library found
+field6_test/01: Crash # Issue 33686 - No core library found
+field_initialization_order_test/01: MissingCompileTimeError
+final_syntax_test/01: MissingCompileTimeError
+final_syntax_test/02: MissingCompileTimeError
+final_syntax_test/03: MissingCompileTimeError
+final_syntax_test/04: MissingCompileTimeError
+first_class_types_literals_test/03: Crash # Error recovery in method body (invalid assignment)
+first_class_types_literals_test/04: Crash # Error recovery in method body (invalid assignment)
+first_class_types_literals_test/08: Crash # Error recovery in method body (invalid assignment)
+first_class_types_literals_test/09: Crash # Error recovery in method body (invalid assignment)
+function_type_parameter2_negative_test: Crash # Error recovery in method body (use of non-const closure in a const context)
+function_type_parameter_negative_test: Crash # Error recovery in method body (use of non-const closure in a const context)
+generic_function_type_as_type_argument_test/01: MissingCompileTimeError
+generic_function_type_as_type_argument_test/02: MissingCompileTimeError
+generic_function_typedef2_test/04: Crash # Issue #34043 - Error recovery in outline (attempt to apply type arguments to a non-generic type)
+generic_local_functions_test: Crash # Problem with generic function-typed parameter
+generic_methods_generic_function_parameter_test: Crash # Problem with generic function-typed parameter
+generic_methods_generic_function_result_test/01: MissingCompileTimeError
+generic_no_such_method_dispatcher_simple_test: CompileTimeError # Issue 34047
+generic_no_such_method_dispatcher_test: CompileTimeError # Issue 34047
+generic_tearoff_test: Crash # Problem with generic function-typed parameter
+generic_test/01: MissingCompileTimeError
+get_set_syntax_test/02: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/03: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/06: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/07: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/10: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/11: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/14: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+get_set_syntax_test/15: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+getters_setters2_test/01: MissingStaticWarning
+getters_setters_type_test/01: MissingStaticWarning
+hidden_import_test/01: MissingStaticWarning
+hidden_import_test/02: MissingStaticWarning
+if_null_assignment_behavior_test/15: Crash # Error recovery in method body (invalid assignment)
+illegal_initializer_test/02: Crash # Issue #33771 - Error recovery in method body (error in constructor initializer)
+illegal_initializer_test/04: Crash # Issue #33771 - Error recovery in method body (error in constructor initializer)
+import_nonexisting_dart_uri_test/01: Crash # Issue 33686 - No core library found
+instantiate_tearoff_of_call_test: CompileTimeError # Front end fails to instantiate tear-offs of `call`
+instantiate_type_variable_test/01: Crash # Error recovery in method body (attempt to instantiate type variable)
+interface_cycle_test/01: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+interface_cycle_test/02: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+interface_injection1_test/1: Crash # Issue 33686 - No core library found
+interface_injection2_test/1: Crash # Issue 33686 - No core library found
+internal_library_test/02: Crash # Issue #34043 - Error recovery in outline (illegal part file)
+is_not_class2_test/01: Crash # Error recovery in method body (non-type where type expected)
+issue31596_super_test/01: CompileTimeError # Front end fails to skip forwarding stubs when resolving super calls
+issue31596_super_test/03: CompileTimeError # Front end fails to skip forwarding stubs when resolving super calls
+label5_test/01: Crash # Error recovery in method body (illegal jump target)
+label6_test/03: Crash # Error recovery in method body (illegal jump target)
+library_ambiguous_test/00: Crash # Error recovery in method body (ambiguous imported name)
+library_test/01: Crash # Issue 33686 - No core library found
+list_literal_negative_test: Crash # Error recovery in method body (malformed constructor invocation)
+list_literal_syntax_test/06: Crash
+main_not_a_function_test: Crash # Issue 33686 - No core library found
+metadata_test: Crash # Poor handling of annotation inside typedef
+missing_part_of_tag_test/01: Crash # Issue #34043 - Error recovery in outline (part file missing "part of" declaration - see also #33587)
+mixin_cyclic_test/01: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_cyclic_test/02: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_cycles_test/01: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_cycles_test/02: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_cycles_test/03: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_cycles_test/04: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_cycles_test/05: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_cycles_test/06: Crash # Issue #34043 - Error recovery in outline (class hierarchy cycle - see also #33756)
+mixin_illegal_super_use_test/01: MissingCompileTimeError
+mixin_illegal_super_use_test/04: MissingCompileTimeError
+mixin_illegal_super_use_test/07: MissingCompileTimeError
+mixin_illegal_super_use_test/10: MissingCompileTimeError
+mixin_illegal_super_use_test/11: MissingCompileTimeError
+mixin_illegal_superclass_test/01: MissingCompileTimeError
+mixin_illegal_superclass_test/02: MissingCompileTimeError
+mixin_illegal_superclass_test/03: MissingCompileTimeError
+mixin_illegal_superclass_test/04: MissingCompileTimeError
+mixin_illegal_superclass_test/05: MissingCompileTimeError
+mixin_illegal_superclass_test/06: MissingCompileTimeError
+mixin_illegal_superclass_test/07: MissingCompileTimeError
+mixin_illegal_superclass_test/08: MissingCompileTimeError
+mixin_illegal_superclass_test/09: MissingCompileTimeError
+mixin_illegal_superclass_test/10: MissingCompileTimeError
+mixin_illegal_superclass_test/11: MissingCompileTimeError
+mixin_illegal_superclass_test/12: MissingCompileTimeError
+mixin_illegal_superclass_test/13: MissingCompileTimeError
+mixin_illegal_superclass_test/14: MissingCompileTimeError
+mixin_illegal_superclass_test/15: MissingCompileTimeError
+mixin_illegal_superclass_test/16: MissingCompileTimeError
+mixin_illegal_superclass_test/17: MissingCompileTimeError
+mixin_illegal_superclass_test/18: MissingCompileTimeError
+mixin_illegal_superclass_test/19: MissingCompileTimeError
+mixin_illegal_superclass_test/20: MissingCompileTimeError
+mixin_illegal_superclass_test/21: MissingCompileTimeError
+mixin_illegal_superclass_test/22: MissingCompileTimeError
+mixin_illegal_superclass_test/23: MissingCompileTimeError
+mixin_illegal_superclass_test/24: MissingCompileTimeError
+mixin_illegal_superclass_test/25: MissingCompileTimeError
+mixin_illegal_superclass_test/26: MissingCompileTimeError
+mixin_illegal_superclass_test/27: MissingCompileTimeError
+mixin_illegal_superclass_test/28: MissingCompileTimeError
+mixin_illegal_superclass_test/29: MissingCompileTimeError
+mixin_illegal_superclass_test/30: MissingCompileTimeError
+mixin_illegal_syntax_test/01: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/02: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/03: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/04: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/05: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/06: Crash # Issue #34043 - Error recovery in outline (syntax error in class declaration)
+mixin_illegal_syntax_test/07: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/08: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/09: Crash # Issue 33686 - No core library found
+mixin_illegal_syntax_test/10: Crash # Issue #34043 - Error recovery in outline (syntax error in class declaration)
+mixin_illegal_syntax_test/11: Crash # Issue #34043 - Error recovery in outline (syntax error in class declaration)
+mixin_illegal_syntax_test/12: Crash # Issue #34043 - Error recovery in outline (syntax error in class declaration)
+mixin_illegal_syntax_test/14: Crash # Issue #34043 - Error recovery in outline (syntax error in class declaration)
+mixin_supertype_subclass2_test/02: MissingStaticWarning
+mixin_supertype_subclass2_test/05: MissingStaticWarning
+mixin_supertype_subclass3_test/02: MissingStaticWarning
+mixin_supertype_subclass3_test/05: MissingStaticWarning
+mixin_supertype_subclass4_test/01: MissingStaticWarning
+mixin_supertype_subclass4_test/02: MissingStaticWarning
+mixin_supertype_subclass4_test/03: MissingStaticWarning
+mixin_supertype_subclass4_test/04: MissingStaticWarning
+mixin_supertype_subclass4_test/05: MissingStaticWarning
+named_constructor_test/07: Crash # Error recovery in method body (type arguments in non-grammatical location)
+named_constructor_test/10: Crash # Error recovery in method body (type arguments in non-grammatical location)
+named_parameters_aggregated_test/03: Crash # Error recovery in method body (default value in function-typed parameter declaration)
+nested_generic_closure_test: Crash # Problem with generic function-typed parameter
+new_expression_type_args_test/00: Crash # Error recovery in method body (attempt to instantiate type variable)
+new_expression_type_args_test/01: Crash # Error recovery in method body (attempt to instantiate type variable)
+no_main_test/01: MissingStaticWarning
+not_enough_positional_arguments_test/01: Crash # Error recovery in method body (error in super constructor call)
+not_enough_positional_arguments_test/02: Crash # Error recovery in method body (error in super constructor call)
+not_enough_positional_arguments_test/05: Crash # Error recovery in method body (error in super constructor call)
+null_no_such_method_test: CompileTimeError # Issue 34047
+operator2_negative_test: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+parameter_default_test/01: Crash # Issue #34043 - Error recovery in outline (default value in required parameter)
+parameter_default_test/02: Crash # Issue #34043 - Error recovery in outline (default value in required parameter)
+parameter_default_test/03: Crash # Issue #34043 - Error recovery in outline (default value in required parameter)
+parameter_default_test/04: Crash # Issue #34043 - Error recovery in outline (default value in required parameter)
+parameter_default_test/05: Crash # Issue #34043 - Error recovery in outline (default value in required parameter)
+parameter_default_test/06: Crash # Issue #34043 - Error recovery in outline (default value in required parameter)
+parameter_metadata_test/02: Crash # Poor handling of annotation inside function-typed parameter
+parameter_metadata_test/03: Crash # Poor handling of annotation inside function-typed parameter
+parameter_metadata_test/04: Crash # Poor handling of annotation inside function-typed parameter
+parser_quirks_test: CompileTimeError # Issue 34047
+part_of_multiple_libs_test/01: Crash # Poor handling of part file used by multiple libs
+part_refers_to_core_library_test/01: Crash # Issue 33686 - No core library found
+prefix_import_collision_test/01: Crash # Error recovery in method body (ambiguous imported name)
+prefix_shadow_test/01: Crash # Error recovery in method body (attempt to use type variable as prefix)
+prefix_variable_collision_test/01: Crash # Issue 33686 - No core library found
+regress_20394_test/01: Crash # Error recovery in method body (error in super constructor call)
+regress_23408_test: CompileTimeError # Issue 34047
+regress_28217_test/01: Crash # Error recovery in method body (error in constructor redirect)
+regress_28217_test/none: Crash # Error recovery in method body (error in constructor redirect)
+regress_29025_test: CompileTimeError # Issue 34047
+regress_29405_test: CompileTimeError # Issue 34047
+regress_30339_test: CompileTimeError # Issue 34047
+regress_33235_04_test/01: Crash # Issue 33686 - No core library found
+regress_33235_05_test/01: Crash # Issue 33686 - No core library found
+regress_33235_06_test/01: Crash # Issue 33686 - No core library found
+regress_33235_08_test/01: Crash # Issue 33686 - No core library found
+regress_33235_09_test/01: Crash # Issue 33686 - No core library found
+regress_33235_14_test/01: Crash # Issue 33686 - No core library found
+regress_33235_15_test/01: Crash # Issue 33686 - No core library found
+script1_negative_test: Crash # Error resovery in outline (imported library has incorrect declaration order)
+script2_negative_test: Crash # Error resovery in outline (part file contains a "library" declaration)
+setter3_test/01: MissingStaticWarning
+setter3_test/02: MissingStaticWarning
+setter_declaration2_negative_test: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+setter_declaration_negative_test: Crash # Issue #34043 - Error recovery in outline (setter with wrong number of parameters - see also #33691)
+setter_no_getter_call_test/01: Crash # Error recovery in method body (attempt to read from setter)
+setter_no_getter_test/01: CompileTimeError # Issue 34047
+static_setter_conflicts_test/09: Crash # Issue 33686 - No core library found
+static_setter_conflicts_test/10: Crash # Issue 33686 - No core library found
+static_setter_get_test/01: Crash # Error recovery in method body (attempt to read from setter)
+string_split_test: CompileTimeError # Issue 34047
+string_supertype_checked_test: CompileTimeError # Issue 34047
+super_bound_closure_test/none: CompileTimeError # Issue 34047
+super_call4_test/01: Pass
+super_conditional_operator_test/01: Crash # Error recovery in method body (error in constructor redirect)
+super_conditional_operator_test/17: Crash # Error recovery in method body (nonsensical use of super)
+super_conditional_operator_test/18: Crash # Error recovery in method body (nonsensical use of super)
+super_no_such_method1_test: CompileTimeError # Issue 34047
+super_no_such_method2_test: CompileTimeError # Issue 34047
+super_no_such_method3_test: CompileTimeError # Issue 34047
+super_operator_index5_test: CompileTimeError # Issue 34047
+super_operator_index6_test: CompileTimeError # Issue 34047
+super_operator_index7_test: CompileTimeError # Issue 34047
+super_operator_index8_test: CompileTimeError # Issue 34047
+switch3_negative_test: Crash # Error recovery in method body (illegal jump target)
+switch5_negative_test: Crash # Error recovery in method body (illegal jump target)
+switch7_negative_test: Crash # Error recovery in method body (illegal jump target)
+switch_case_warn_test/15: MissingCompileTimeError
+switch_case_warn_test/17: MissingCompileTimeError
+syntax_test/04: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/05: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/06: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/07: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/08: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/09: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/10: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/11: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/13: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/14: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/15: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/16: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/17: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/18: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/19: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/20: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/21: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/23: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/24: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/25: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/26: Crash # Issue #34043 - Error recovery in outline (illegal operator declaration)
+syntax_test/63: Crash # Error recovery in method body (invalid assignment)
+syntax_test/64: Crash # Error recovery in method body (invalid assignment)
+syntax_test/65: Crash # Error recovery in method body (invalid assignment)
+this_conditional_operator_test/01: Crash # Error recovery in method body (error in constructor redirect)
+this_in_initializer_test/06: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/07: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/08: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/10: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/11: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/12: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/13: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/15: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/16: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/17: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/18: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/25: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/26: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/28: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/35: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/36: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/38: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/40: Crash # Error recovery in method body (error in constructor initializer)
+this_in_initializer_test/41: Crash # Error recovery in method body (error in constructor initializer)
+this_test/01: Crash # Error recovery in method body (nonsensical use of this)
+this_test/02: Crash # Error recovery in method body (nonsensical use of this)
+this_test/03: Crash # Error recovery in method body (nonsensical use of this)
+this_test/04: Crash # Error recovery in method body (nonsensical use of this)
+this_test/05: Crash # Error recovery in method body (nonsensical use of this)
+this_test/06: Crash # Error recovery in method body (nonsensical use of this)
+this_test/07: Crash # Error recovery in method body (nonsensical use of this)
+this_test/08: Crash # Error recovery in method body (nonsensical use of this)
+toplevel_collision1_test/00: Crash # Issue 33686 - No core library found
+toplevel_collision1_test/02: Crash # Issue 33686 - No core library found
+toplevel_collision2_test/00: Crash # Issue 33686 - No core library found
+toplevel_collision2_test/01: Crash # Issue 33686 - No core library found
+type_parameter_test/04: Crash # Issue #34043 - Error recovery in outline (attempt to use class type parameter in static signature)
+type_parameter_test/05: Crash # Issue #34043 - Error recovery in outline (attempt to use class type parameter in static signature)
+type_parameter_test/06: Crash # Issue #34043 - Error recovery in outline (attempt to use class type parameter in static signature)
+type_parameter_test/08: Crash # Issue #34043 - Error recovery in outline (attempt to use class type parameter in static signature)
+type_parameter_test/09: Crash # Issue #34043 - Error recovery in outline (attempt to use class type parameter in static signature)
+type_promotion_functions_test/02: CompileTimeError # Issue 34047
+type_promotion_functions_test/03: CompileTimeError # Issue 34047
+type_promotion_functions_test/04: CompileTimeError # Issue 34047
+type_promotion_functions_test/09: CompileTimeError # Issue 34047
+type_promotion_functions_test/11: CompileTimeError # Issue 34047
+type_promotion_functions_test/12: CompileTimeError # Issue 34047
+type_promotion_functions_test/13: CompileTimeError # Issue 34047
+type_promotion_functions_test/14: CompileTimeError # Issue 34047
+type_promotion_functions_test/none: CompileTimeError # Issue 34047
+type_promotion_more_specific_test/04: CompileTimeError # Issue 34047
+type_variable_static_context_test: Crash # Error recovery in method body (attempt to instantiate type variable)
+unbalanced_brace_test/01: Crash # Error recovery due to mismatched braces
+unbalanced_brace_test/02: Crash # Error recovery due to mismatched braces
+unsupported_operators_test/01: Crash # Error recovery in method body (attempt to use unsupported operator)
+unsupported_operators_test/02: Crash # Error recovery in method body (attempt to use unsupported operator)
+unsupported_operators_test/03: Crash # Error recovery in method body (attempt to use unsupported operator)
+unsupported_operators_test/04: Crash # Error recovery in method body (attempt to use unsupported operator)
+variable_declaration_metadata_test/13: Crash # Error recovery in method body (annotation in for statement)
+variable_declaration_metadata_test/14: Crash # Error recovery in method body (annotation in for statement)
+variable_declaration_metadata_test/15: Crash # Error recovery in method body (annotation in for statement)
+variable_declaration_metadata_test/16: Crash # Error recovery in method body (annotation in for statement)
+variable_shadow_class_test/01: Crash # Error recovery in method body (attempt to use local variable as prefix)
+vm/debug_break_vm_test/01: Crash # Error recovery in method body (illegal jump target)
+vm/debug_break_vm_test/02: Crash # Error recovery in method body (illegal jump target)
+vm/regress_27201_test: Crash # Issue 33686 - No core library found
+vm/regress_33469_test/01: Crash # Const evaluator fails to detect invalid shift
+vm/regress_33469_test/02: Crash # Const evaluator fails to detect invalid shift
+vm/regress_33469_test/03: MissingCompileTimeError
+web_int_literals_test/01: MissingCompileTimeError
+web_int_literals_test/02: MissingCompileTimeError
+web_int_literals_test/03: MissingCompileTimeError
+web_int_literals_test/10: MissingCompileTimeError
+web_int_literals_test/11: MissingCompileTimeError
+web_int_literals_test/12: MissingCompileTimeError
+web_int_literals_test/13: MissingCompileTimeError
+web_int_literals_test/20: MissingCompileTimeError
+web_int_literals_test/21: MissingCompileTimeError
+web_int_literals_test/22: MissingCompileTimeError
+web_int_literals_test/23: MissingCompileTimeError
+web_int_literals_test/24: MissingCompileTimeError
+web_int_literals_test/25: MissingCompileTimeError
+web_int_literals_test/26: MissingCompileTimeError
+web_int_literals_test/27: MissingCompileTimeError
+web_int_literals_test/28: MissingCompileTimeError
+web_int_literals_test/29: MissingCompileTimeError
+web_int_literals_test/61: MissingCompileTimeError
+web_int_literals_test/62: MissingCompileTimeError
+web_int_literals_test/63: MissingCompileTimeError
+web_int_literals_test/64: MissingCompileTimeError
+web_int_literals_test/65: MissingCompileTimeError
+web_int_literals_test/70: MissingCompileTimeError
 
 [ $compiler == dart2analyzer && !$fasta ]
 abstract_override_adds_optional_args_concrete_subclass_test: MissingCompileTimeError # Issue #30568
 abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError # Issue #30568
 abstract_override_adds_optional_args_supercall_test: MissingCompileTimeError # Issue #30568
+accessor_conflict_export2_test: CompileTimeError # Issue 25626
+accessor_conflict_export_test: CompileTimeError # Issue 25626
+accessor_conflict_import2_test: CompileTimeError # Issue 25626
+accessor_conflict_import_prefixed2_test: CompileTimeError # Issue 25626
+accessor_conflict_import_prefixed_test: CompileTimeError # Issue 25626
+accessor_conflict_import_test: CompileTimeError # Issue 25626
+additional_interface_adds_optional_args_test: CompileTimeError # Issue #30568
 built_in_identifier_prefix_test: CompileTimeError
 built_in_identifier_type_annotation_test/dynamic-gen: MissingCompileTimeError # Issue 28813
+cascaded_forwarding_stubs_test: CompileTimeError
 check_member_static_test/01: CompileTimeError
+config_import_corelib_test: CompileTimeError
 config_import_corelib_test: StaticWarning, OK
+conflicting_generic_interfaces_hierarchy_loop_infinite_test: Skip # Crashes or times out
 conflicting_type_variable_and_setter_test: CompileTimeError # Issue 25525
 const_cast2_test/01: CompileTimeError
 const_cast2_test/none: CompileTimeError
 const_for_in_variable_test/01: MissingCompileTimeError # Issue 25161
+default_implementation2_test: CompileTimeError # Issue 30855
 dynamic_prefix_core_test/01: MissingCompileTimeError
 emit_const_fields_test: CompileTimeError
 enum_syntax_test/05: Fail # Issue 21649
 enum_syntax_test/06: Fail # Issue 21649
+error_stacktrace_test/00: MissingCompileTimeError
+error_stacktrace_test/00: Pass
 field3_test/01: MissingCompileTimeError # Issue 33022
 field3_test/02: MissingCompileTimeError # Issue 33022
+field3a_negative_test: StaticWarning # Issue 28823
 final_syntax_test/01: Fail # Issue 11124
 final_syntax_test/02: Fail # Issue 11124
 final_syntax_test/03: Fail # Issue 11124
 final_syntax_test/04: Fail # Issue 11124
+forwarding_stub_tearoff_test: CompileTimeError
 generic_local_functions_test: CompileTimeError # Issue 28515
 generic_methods_generic_function_parameter_test: CompileTimeError # Issue 28515
+generic_methods_generic_function_result_test/none: CompileTimeError # Issue #30207
 generic_no_such_method_dispatcher_simple_test: Skip # This test is just for kernel.
+generic_no_such_method_dispatcher_test: CompileTimeError
+generic_tearoff_test: CompileTimeError
 getter_setter_in_lib_test: Fail # Issue 23286
 implicit_creation/implicit_const_context_constructor_generic_named_test: CompileTimeError
 implicit_creation/implicit_const_context_constructor_generic_test: CompileTimeError
@@ -65,12 +480,29 @@
 implicit_creation/implicit_const_context_prefix_constructor_generic_test: CompileTimeError
 index_assign_operator_infer_return_type_test: StaticWarning
 initializing_formal_final_test: MissingCompileTimeError
+interceptor6_test: CompileTimeError
 interface_test/00: MissingCompileTimeError
 invalid_type_argument_count_test/01: MissingCompileTimeError
 invalid_type_argument_count_test/02: MissingCompileTimeError
 invalid_type_argument_count_test/03: MissingCompileTimeError
 invalid_type_argument_count_test/04: MissingCompileTimeError
+issue13673_test: StaticWarning # Issue 31925
+issue31596_implement_covariant_test: CompileTimeError
+issue31596_override_test/01: CompileTimeError
+issue31596_override_test/02: CompileTimeError
+issue31596_override_test/03: CompileTimeError
+issue31596_override_test/04: CompileTimeError
+issue31596_override_test/none: CompileTimeError
+issue31596_super_test/01: CompileTimeError
+issue31596_super_test/03: CompileTimeError
+issue31596_super_test/05: CompileTimeError
+issue31596_super_test/none: CompileTimeError
+issue31596_tearoff_test: CompileTimeError
+issue31596_test: CompileTimeError
+malformed2_test: Pass, MissingCompileTimeError # Issue 31056.
 method_override7_test/03: Fail # Issue 11497
+mixin_super_2_test/01: MissingCompileTimeError
+mixin_super_2_test/03: MissingCompileTimeError
 mixin_supertype_subclass2_test/02: MissingStaticWarning # Issue 25614
 mixin_supertype_subclass2_test/05: MissingStaticWarning # Issue 25614
 mixin_supertype_subclass3_test/02: MissingStaticWarning # Issue 25614
@@ -80,21 +512,40 @@
 mixin_supertype_subclass4_test/03: MissingStaticWarning # Issue 25614
 mixin_supertype_subclass4_test/04: MissingStaticWarning # Issue 25614
 mixin_supertype_subclass4_test/05: MissingStaticWarning # Issue 25614
+mixin_supertype_subclass_test/02: MissingCompileTimeError
 mixin_supertype_subclass_test/02: MissingStaticWarning # Issue 25614
+mixin_supertype_subclass_test/05: MissingCompileTimeError
 mixin_supertype_subclass_test/05: MissingStaticWarning # Issue 25614
+multiline_newline_test/01: CompileTimeError
+multiline_newline_test/01r: CompileTimeError
+multiline_newline_test/02: CompileTimeError
+multiline_newline_test/02r: CompileTimeError
+multiline_newline_test/04: MissingCompileTimeError
+multiline_newline_test/04r: MissingCompileTimeError
+multiline_newline_test/05: MissingCompileTimeError
+multiline_newline_test/05r: MissingCompileTimeError
+multiple_interface_inheritance_test: CompileTimeError # Issue 30552
 nested_generic_closure_test: CompileTimeError
 no_main_test/01: Fail # Issue 20030
+no_main_test/01: MissingStaticWarning # Issue 28823
 no_such_constructor2_test: StaticWarning
 override_field_test/02: CompileTimeError
+override_inheritance_field_test/42: CompileTimeError
+parser_quirks_test: CompileTimeError
 part_of_multiple_libs_test/01: MissingCompileTimeError # Issue 33227
 part_refers_to_core_library_test/01: MissingCompileTimeError # Issue 29709
 prefix_shadow_test/01: MissingCompileTimeError # Issue 33005
+regress_22976_test/01: CompileTimeError
+regress_22976_test/02: CompileTimeError
+regress_22976_test/none: CompileTimeError
 regress_23408_test: Skip # don't care about the static warning.
 regress_27617_test/1: MissingCompileTimeError
 regress_29025_test: CompileTimeError # Issue 29081
 regress_29349_test: CompileTimeError # Issue 29744
 regress_29405_test: CompileTimeError # Issue 29421
 regress_29784_test/02: MissingCompileTimeError # Issue 29784
+regress_30121_test: CompileTimeError # Issue 31087
+regress_30339_test: CompileTimeError
 regress_33235_03_test/01: MissingCompileTimeError
 regress_33235_07_test/03: MissingCompileTimeError
 regress_33235_10_test/01: MissingCompileTimeError
@@ -107,33 +558,70 @@
 regress_33235_16_test/03: MissingCompileTimeError
 regress_33235_19_test: CompileTimeError
 regress_33235_20_test: CompileTimeError
+setter_override2_test/02: MissingCompileTimeError # Issue 14736
 static_setter_conflicts_test/02: MissingCompileTimeError
 static_setter_conflicts_test/11: MissingCompileTimeError
 static_setter_conflicts_test/12: MissingCompileTimeError
+string_split_test: CompileTimeError
+string_supertype_checked_test: CompileTimeError
+super_bound_closure_test/none: CompileTimeError
 super_call4_test/01: MissingCompileTimeError
-super_setter_test: StaticWarning
+super_no_such_method4_test/01: MissingCompileTimeError # Issue 33553
+super_no_such_method5_test/01: MissingCompileTimeError # Issue 33553
+super_setter_test: StaticWarning # Issue 28823
+switch_case_test/none: CompileTimeError
+syntax_test/60: MissingCompileTimeError
+syntax_test/61: MissingCompileTimeError
 try_catch_on_syntax_test/10: MissingCompileTimeError
 try_catch_on_syntax_test/11: MissingCompileTimeError
 type_inference_inconsistent_inheritance_test: MissingCompileTimeError
+type_promotion_functions_test/01: Pass
+type_promotion_functions_test/05: Pass
+type_promotion_functions_test/06: Pass
+type_promotion_functions_test/07: Pass
+type_promotion_functions_test/08: Pass
+type_promotion_functions_test/10: Pass
 type_variable_scope_test/none: Fail # Issue 11578
 vm/debug_break_enabled_vm_test: Skip
 vm/debug_break_vm_test/*: Skip
+vm/lazy_deopt_with_exception_test: CompileTimeError
 vm/lazy_deopt_with_exception_test: Pass
 vm/regress_27201_test: SkipByDesign # Loads bad library, so will always crash.
 vm/regress_33469_test/01: Crash # http://dartbug.com/33481
 vm/regress_33469_test/02: Crash # http://dartbug.com/33481
 vm/regress_33469_test/03: MissingCompileTimeError # http://dartbug.com/33481
 void/generalized_void_syntax_test: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
-void/void_type_usage_test/async_use_in_await:  CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
-void/void_type_usage_test/async_use_in_yield:  MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
-void/void_type_usage_test/async_use_in_yield_star:  MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_function_types_test/none: CompileTimeError # Issue 30177
+void/void_type_usage_test/async_use_in_await: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/async_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/async_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/final_local_for_in2: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
-void/void_type_usage_test/sync_use_in_yield:  MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
-void/void_type_usage_test/sync_use_in_yield_star:  MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/sync_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/sync_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 web_int_literals_test/01: MissingCompileTimeError
 web_int_literals_test/02: MissingCompileTimeError
 web_int_literals_test/03: MissingCompileTimeError
@@ -158,103 +646,3 @@
 web_int_literals_test/64: MissingCompileTimeError
 web_int_literals_test/65: MissingCompileTimeError
 web_int_literals_test/70: MissingCompileTimeError
-
-[ $compiler == dart2analyzer && !$fasta && !$preview_dart_2 ]
-call_type_literal_test: CompileTimeError
-class_literal_static_test/none: CompileTimeError
-class_literal_test/none: CompileTimeError
-constructor_call_as_function_test: CompileTimeError
-implicit_creation/implicit_const_context_constructor_named_test: CompileTimeError
-implicit_creation/implicit_const_context_constructor_test: CompileTimeError
-implicit_creation/implicit_const_context_list_test: CompileTimeError
-implicit_creation/implicit_const_context_map_test: CompileTimeError
-implicit_creation/implicit_const_context_prefix_constructor_named_test: CompileTimeError
-implicit_creation/implicit_const_context_prefix_constructor_test: CompileTimeError
-implicit_creation/implicit_const_not_default_values_test/o.*: CompileTimeError # No support for implicit creation.
-implicit_creation/implicit_new_constructor_generic_named_test: CompileTimeError
-implicit_creation/implicit_new_constructor_generic_test: CompileTimeError
-implicit_creation/implicit_new_constructor_named_test: CompileTimeError
-implicit_creation/implicit_new_constructor_test: CompileTimeError
-implicit_creation/implicit_new_or_const_composite_test: CompileTimeError
-implicit_creation/implicit_new_or_const_generic_test: CompileTimeError
-implicit_creation/implicit_new_or_const_test: CompileTimeError
-implicit_creation/implicit_new_prefix_constructor_generic_named_test: CompileTimeError
-implicit_creation/implicit_new_prefix_constructor_generic_test: CompileTimeError
-implicit_creation/implicit_new_prefix_constructor_named_test: CompileTimeError
-implicit_creation/implicit_new_prefix_constructor_test: CompileTimeError
-reify_typevar_static_test/00: MissingCompileTimeError
-type_literal_prefix_call_test: CompileTimeError
-
-[ $compiler == dart2analyzer && !$fasta && $strong ]
-accessor_conflict_export2_test: CompileTimeError # Issue 25626
-accessor_conflict_export_test: CompileTimeError # Issue 25626
-accessor_conflict_import2_test: CompileTimeError # Issue 25626
-accessor_conflict_import_prefixed2_test: CompileTimeError # Issue 25626
-accessor_conflict_import_prefixed_test: CompileTimeError # Issue 25626
-accessor_conflict_import_test: CompileTimeError # Issue 25626
-additional_interface_adds_optional_args_test: CompileTimeError # Issue #30568
-cascaded_forwarding_stubs_test: CompileTimeError
-config_import_corelib_test: CompileTimeError
-conflicting_generic_interfaces_hierarchy_loop_infinite_test: Skip # Crashes or times out
-default_implementation2_test: CompileTimeError # Issue 30855
-error_stacktrace_test/00: Pass
-field3_test/02: MissingCompileTimeError # Issue 33022
-field3a_negative_test: StaticWarning # Issue 28823
-forwarding_stub_tearoff_test: CompileTimeError
-generic_methods_generic_function_result_test/none: CompileTimeError # Issue #30207
-generic_no_such_method_dispatcher_test: CompileTimeError
-generic_tearoff_test: CompileTimeError
-interceptor6_test: CompileTimeError
-issue13673_test: StaticWarning # Issue 31925
-issue31596_implement_covariant_test: CompileTimeError
-issue31596_override_test/01: CompileTimeError
-issue31596_override_test/02: CompileTimeError
-issue31596_override_test/03: CompileTimeError
-issue31596_override_test/04: CompileTimeError
-issue31596_override_test/none: CompileTimeError
-issue31596_super_test/01: CompileTimeError
-issue31596_super_test/03: CompileTimeError
-issue31596_super_test/05: CompileTimeError
-issue31596_super_test/none: CompileTimeError
-issue31596_tearoff_test: CompileTimeError
-issue31596_test: CompileTimeError
-malformed2_test: Pass, MissingCompileTimeError # Issue 31056.
-mixin_super_2_test/01: MissingCompileTimeError
-mixin_super_2_test/03: MissingCompileTimeError
-mixin_supertype_subclass_test/02: MissingCompileTimeError
-mixin_supertype_subclass_test/05: MissingCompileTimeError
-multiline_newline_test/01: CompileTimeError
-multiline_newline_test/01r: CompileTimeError
-multiline_newline_test/02: CompileTimeError
-multiline_newline_test/02r: CompileTimeError
-multiline_newline_test/04: MissingCompileTimeError
-multiline_newline_test/04r: MissingCompileTimeError
-multiline_newline_test/05: MissingCompileTimeError
-multiline_newline_test/05r: MissingCompileTimeError
-multiple_interface_inheritance_test: CompileTimeError # Issue 30552
-no_main_test/01: MissingStaticWarning # Issue 28823
-override_inheritance_field_test/42: CompileTimeError
-parser_quirks_test: CompileTimeError
-regress_22976_test/01: CompileTimeError
-regress_22976_test/02: CompileTimeError
-regress_22976_test/none: CompileTimeError
-regress_30121_test: CompileTimeError # Issue 31087
-regress_30339_test: CompileTimeError
-setter_override2_test/02: MissingCompileTimeError # Issue 14736
-string_split_test: CompileTimeError
-string_supertype_checked_test: CompileTimeError
-super_bound_closure_test/none: CompileTimeError
-super_no_such_method4_test/01: MissingCompileTimeError # Issue 33553
-super_no_such_method5_test/01: MissingCompileTimeError # Issue 33553
-super_setter_test: StaticWarning # Issue 28823
-switch_case_test/none: CompileTimeError
-syntax_test/60: MissingCompileTimeError
-syntax_test/61: MissingCompileTimeError
-type_promotion_functions_test/01: Pass
-type_promotion_functions_test/05: Pass
-type_promotion_functions_test/06: Pass
-type_promotion_functions_test/07: Pass
-type_promotion_functions_test/08: Pass
-type_promotion_functions_test/10: Pass
-vm/lazy_deopt_with_exception_test: CompileTimeError
-void/void_type_function_types_test/none: CompileTimeError # Issue 30177
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index b3b8262..32f3b70 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -242,7 +242,6 @@
 constructor_duplicate_final_test/02: MissingCompileTimeError
 constructor_named_arguments_test/01: MissingCompileTimeError
 constructor_named_arguments_test/none: RuntimeError
-constructor_redirect_test/01: Crash # Assertion failure: Cannot find value Instance of 'ThisLocal' in (local(A.named2#x), local(A.named2#y), local(A.named2#z)) for j:constructor(A.named2).
 covariant_override/runtime_check_test: RuntimeError
 covariant_subtyping_test: RuntimeError
 deferred_constraints_type_annotation_test/as_operation: MissingCompileTimeError
@@ -418,7 +417,6 @@
 regress_28255_test: RuntimeError
 regress_28341_test: RuntimeError
 regress_29405_test: RuntimeError
-regress_29784_test/02: MissingCompileTimeError # Issue 29784
 regress_30339_test: RuntimeError # Issue 26429
 regress_31057_test: Crash # Unsupported operation: Unsupported type parameter type node B.
 stacktrace_demangle_ctors_test: RuntimeError # Issue 12698
@@ -472,11 +470,7 @@
 abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError
 additional_interface_adds_optional_args_concrete_subclass_test: MissingCompileTimeError
 additional_interface_adds_optional_args_concrete_test: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/01: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/02: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError
 async_return_types_test/nestedFuture: Crash # 'file:*/pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart': Failed assertion: line 208 pos 18: '!(_useKernel && _strongMode && !_disableRtiOptimization) ||
-async_return_types_test/wrongReturnType: Crash # 'file:*/pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart': Failed assertion: line 208 pos 18: '!(_useKernel && _strongMode && !_disableRtiOptimization) ||
 async_star_cancel_while_paused_test: Crash # 'file:*/pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart': Failed assertion: line 208 pos 18: '!(_useKernel && _strongMode && !_disableRtiOptimization) ||
 await_not_started_immediately_test: Crash # Assertion failure: Runtime type information not available for type_variable_local(bindCallback.R) in (local(_RootZone.bindCallback#)) for j:closure_call(_RootZone_bindCallback_closure.call).
 call_non_method_field_test/01: MissingCompileTimeError
@@ -605,11 +599,7 @@
 abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError
 additional_interface_adds_optional_args_concrete_subclass_test: MissingCompileTimeError
 additional_interface_adds_optional_args_concrete_test: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/01: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/02: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError
 async_return_types_test/nestedFuture: Crash # Interpolated value #1 is not an Expression or List of Expressions: [VariableUse(f), Instance of 'LiteralNull', null]
-async_return_types_test/wrongReturnType: Crash # Interpolated value #1 is not an Expression or List of Expressions: [VariableUse(f), Instance of 'LiteralNull', null]
 async_star_cancel_while_paused_test: Crash # Interpolated value #1 is not an Expression or List of Expressions: [VariableUse(f), Instance of 'LiteralNull', null]
 await_not_started_immediately_test: Crash # Assertion failure: Runtime type information not available for type_variable_local(bindCallback.R) in (local(_RootZone.bindCallback#)) for j:closure_call(_RootZone_bindCallback_closure.call).
 call_non_method_field_test/01: MissingCompileTimeError
@@ -755,7 +745,6 @@
 const_types_test/39: MissingCompileTimeError
 constructor12_test: RuntimeError
 constructor_named_arguments_test/none: RuntimeError
-constructor_redirect_test/01: Crash # Assertion failure: Cannot find value Instance of 'ThisLocal' in (local(A.named2#x), local(A.named2#y), local(A.named2#z)) for j:constructor(A.named2).
 covariant_subtyping_test: Crash
 ct_const_test: RuntimeError
 deferred_inheritance_constraints_test/extends: MissingCompileTimeError
@@ -915,8 +904,6 @@
 regress_28255_test: RuntimeError
 regress_29025_test: CompileTimeError
 regress_29405_test: CompileTimeError
-regress_29784_test/01: Crash
-regress_29784_test/02: MissingCompileTimeError # Issue 29784
 regress_30339_test: CompileTimeError
 setter_no_getter_test/01: CompileTimeError
 stacktrace_demangle_ctors_test: RuntimeError # Issue 12698
@@ -954,7 +941,6 @@
 type_promotion_functions_test/14: CompileTimeError
 type_promotion_functions_test/none: CompileTimeError
 type_promotion_more_specific_test/04: CompileTimeError
-type_variable_promotion_test: RuntimeError
 
 [ $compiler == dart2js && !$strong ]
 *: SkipByDesign
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 1a2b556..5ff7f66 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -190,21 +190,43 @@
 type_promotion_functions_test/14: CompileTimeError # Issue 30895
 type_promotion_functions_test/none: CompileTimeError # Issue 30895
 type_variable_scope_test/none: CompileTimeError
+void/generalized_void_syntax_test: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_function_types_test/none: CompileTimeError # Issue 30177
+void/void_type_usage_test/async_use_in_await: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/async_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/async_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/final_local_for_in2: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/sync_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/sync_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 
 [ $compiler == dartdevk ]
 additional_interface_adds_optional_args_concrete_subclass_test: MissingCompileTimeError
 additional_interface_adds_optional_args_concrete_test: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/01: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/02: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError
 async_return_types_test/nestedFuture: MissingCompileTimeError
-async_return_types_test/wrongReturnType: MissingCompileTimeError
 built_in_identifier_type_annotation_test/dynamic-funarg: RuntimeError # Issue 30450, test name contains hyphen
 built_in_identifier_type_annotation_test/dynamic-funret: RuntimeError # Issue 30450, test name contains hyphen
 built_in_identifier_type_annotation_test/dynamic-list: RuntimeError # Issue 30450, test name contains hyphen
@@ -248,7 +270,6 @@
 const_types_test/34: MissingCompileTimeError
 const_types_test/39: MissingCompileTimeError
 constants_test/05: MissingCompileTimeError
-constructor_redirect_test/01: MissingCompileTimeError
 covariant_subtyping_test: RuntimeError
 cyclic_type_variable_test/01: MissingCompileTimeError
 cyclic_type_variable_test/02: MissingCompileTimeError
@@ -415,8 +436,6 @@
 regress_24283_test: RuntimeError # Expect.equals(expected: <-1>, actual: <4294967295>) fails.
 regress_29025_test: CompileTimeError
 regress_29405_test: CompileTimeError # Issue 31402 Error: A value of type '#lib2::Foo' can't be assigned to a variable of type '(#lib2::Foo) → void'.
-regress_29784_test/01: MissingCompileTimeError
-regress_29784_test/02: MissingCompileTimeError
 regress_30339_test: RuntimeError # Uncaught Expect.isTrue(false) fails.
 regress_30339_test: CompileTimeError
 setter_no_getter_test/01: CompileTimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 131baac..9f006ad 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -212,11 +212,7 @@
 abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError # Issue 32014.
 additional_interface_adds_optional_args_concrete_subclass_test: MissingCompileTimeError # Issue 32014.
 additional_interface_adds_optional_args_concrete_test: MissingCompileTimeError # Issue 32014.
-async_or_generator_return_type_stacktrace_test/01: MissingCompileTimeError # Issue 33068
-async_or_generator_return_type_stacktrace_test/02: MissingCompileTimeError # Issue 33068
-async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError # Issue 33068
 async_return_types_test/nestedFuture: MissingCompileTimeError # Issue 33068
-async_return_types_test/wrongReturnType: MissingCompileTimeError # Issue 33068
 call_non_method_field_test/01: MissingCompileTimeError # Issue 32975
 call_non_method_field_test/02: MissingCompileTimeError # Issue 32975
 const_cast2_test/01: CompileTimeError # Issue 32517
@@ -226,7 +222,6 @@
 const_instance_field_test/01: MissingCompileTimeError # Fasta bug: Const instance field. Issue 32326.
 const_types_test/34: MissingCompileTimeError # Issue 32988
 const_types_test/39: MissingCompileTimeError # Issue 32988
-constructor_redirect_test/01: MissingCompileTimeError # Fasta bug: Initializer refers to this.
 cyclic_type_variable_test/01: MissingCompileTimeError # Issue 32989 (missing cycle check in bounds)
 cyclic_type_variable_test/02: MissingCompileTimeError # Issue 32989 (missing cycle check in bounds)
 cyclic_type_variable_test/03: MissingCompileTimeError # Issue 32989 (missing cycle check in bounds)
@@ -322,8 +317,6 @@
 redirecting_factory_default_values_test/02: MissingCompileTimeError # Fasta bug: Default values are not allowed on redirecting factory constructors.
 regress_22976_test/*: CompileTimeError # Issue 31935
 regress_27617_test/1: MissingCompileTimeError # Fasta bug: Bad constructor redirection.
-regress_29784_test/01: MissingCompileTimeError
-regress_29784_test/02: MissingCompileTimeError
 syntax_test/28: MissingCompileTimeError # Issue 29763
 syntax_test/29: MissingCompileTimeError # Issue 29763
 syntax_test/30: MissingCompileTimeError # Issue 29763
@@ -351,7 +344,6 @@
 export_ambiguous_main_test: Crash # Issue 32618
 
 [ $compiler == app_jitk && $mode == product ]
-type_variable_promotion_test: RuntimeError
 vm/causal_async_exception_stack2_test: RuntimeError
 vm/causal_async_exception_stack_test: RuntimeError
 
@@ -395,6 +387,51 @@
 const_map2_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 const_map3_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 const_switch2_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
+invalid_returns/async_invalid_return_05_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_06_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_07_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_08_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_09_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_10_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_11_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_12_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_13_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_14_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_15_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_16_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_17_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_18_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_19_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_20_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_21_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_22_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_23_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_24_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_25_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_26_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_27_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_28_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_29_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_30_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_31_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_32_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_33_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_34_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_35_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_36_test: MissingCompileTimeError
+invalid_returns/async_invalid_return_37_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_06_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_07_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_08_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_09_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_10_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_11_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_12_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_13_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_14_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_15_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_16_test: MissingCompileTimeError
+invalid_returns/sync_invalid_return_17_test: MissingCompileTimeError
 switch_bad_case_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_bad_case_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_case_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
@@ -414,92 +451,126 @@
 void/void_block_return_test/00: MissingCompileTimeError
 void/void_type_callbacks_test/00: MissingCompileTimeError
 void/void_type_callbacks_test/01: MissingCompileTimeError
+void/void_type_usage_test/async_use_in_await_for: MissingCompileTimeError
+void/void_type_usage_test/async_use_in_yield: MissingCompileTimeError
+void/void_type_usage_test/async_use_in_yield_star: MissingCompileTimeError
+void/void_type_usage_test/call_addition: MissingCompileTimeError
 void/void_type_usage_test/call_argument: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_boolean_and_left: MissingCompileTimeError
+void/void_type_usage_test/call_boolean_and_right: MissingCompileTimeError
+void/void_type_usage_test/call_boolean_negation: MissingCompileTimeError
+void/void_type_usage_test/call_boolean_or_left: MissingCompileTimeError
+void/void_type_usage_test/call_boolean_or_right: MissingCompileTimeError
 void/void_type_usage_test/call_cascade: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_conditional_stmt: MissingCompileTimeError
 void/void_type_usage_test/call_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/call_dynamic_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_equals_left: MissingCompileTimeError
+void/void_type_usage_test/call_equals_right: MissingCompileTimeError
 void/void_type_usage_test/call_for_in: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_identical: MissingCompileTimeError
 void/void_type_usage_test/call_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/call_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/call_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/call_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/call_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/call_literal_map_value_init2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_multiplication: MissingCompileTimeError
 void/void_type_usage_test/call_null_dot: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/call_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/call_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/call_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/call_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/call_void_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/call_use_in_conditional_assignment_right: MissingCompileTimeError
+void/void_type_usage_test/call_use_in_list_subscript: MissingCompileTimeError
+void/void_type_usage_test/call_use_in_map_lookup: MissingCompileTimeError
+void/void_type_usage_test/call_use_in_string_interpolation: MissingCompileTimeError
 void/void_type_usage_test/call_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2_argument: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2_dynamic_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional2_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional2_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/conditional2_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/conditional2_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2_throw: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional2_void_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2for_in: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional2while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional3_argument: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional3_dynamic_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional3_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional3_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional3_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional3_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/conditional3_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/conditional3_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional3_throw: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional3_void_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_argument: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_dynamic_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_for_in: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/conditional_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/conditional_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_throw: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/conditional_void_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/conditional_while: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_addition: MissingCompileTimeError
 void/void_type_usage_test/final_local_argument: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_boolean_and_left: MissingCompileTimeError
+void/void_type_usage_test/final_local_boolean_and_right: MissingCompileTimeError
+void/void_type_usage_test/final_local_boolean_negation: MissingCompileTimeError
+void/void_type_usage_test/final_local_boolean_or_left: MissingCompileTimeError
+void/void_type_usage_test/final_local_boolean_or_right: MissingCompileTimeError
 void/void_type_usage_test/final_local_cascade: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_conditional_stmt: MissingCompileTimeError
 void/void_type_usage_test/final_local_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/final_local_dynamic_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_equals_left: MissingCompileTimeError
+void/void_type_usage_test/final_local_equals_right: MissingCompileTimeError
 void/void_type_usage_test/final_local_for_in: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_identical: MissingCompileTimeError
 void/void_type_usage_test/final_local_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/final_local_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/final_local_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/final_local_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/final_local_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/final_local_literal_map_value_init2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_multiplication: MissingCompileTimeError
 void/void_type_usage_test/final_local_null_dot: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/final_local_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/final_local_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/final_local_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/final_local_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/final_local_void_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/final_local_use_in_conditional_assignment_right: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_list_subscript: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_map_lookup: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_string_interpolation: MissingCompileTimeError
 void/void_type_usage_test/final_local_while: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_addition: MissingCompileTimeError
 void/void_type_usage_test/global_argument: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_boolean_and_left: MissingCompileTimeError
+void/void_type_usage_test/global_boolean_and_right: MissingCompileTimeError
+void/void_type_usage_test/global_boolean_negation: MissingCompileTimeError
+void/void_type_usage_test/global_boolean_or_left: MissingCompileTimeError
+void/void_type_usage_test/global_boolean_or_right: MissingCompileTimeError
 void/void_type_usage_test/global_cascade: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_conditional_stmt: MissingCompileTimeError
 void/void_type_usage_test/global_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_dynamic_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_equals_left: MissingCompileTimeError
+void/void_type_usage_test/global_equals_right: MissingCompileTimeError
 void/void_type_usage_test/global_for_in: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_identical: MissingCompileTimeError
 void/void_type_usage_test/global_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/global_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/global_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_literal_map_value_init2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_multiplication: MissingCompileTimeError
 void/void_type_usage_test/global_null_dot: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_null_equals2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/global_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/global_void_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/global_use_in_conditional_assignment_left: MissingCompileTimeError
+void/void_type_usage_test/global_use_in_conditional_assignment_right: MissingCompileTimeError
+void/void_type_usage_test/global_use_in_list_subscript: MissingCompileTimeError
+void/void_type_usage_test/global_use_in_map_lookup: MissingCompileTimeError
+void/void_type_usage_test/global_use_in_string_interpolation: MissingCompileTimeError
 void/void_type_usage_test/global_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_argument: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_cascade: MissingCompileTimeError # Issue 32804
@@ -508,16 +579,13 @@
 void/void_type_usage_test/instance2_for_in: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance2_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance2_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_literal_map_value_init2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_null_dot: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_null_equals2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance2_void_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance2_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_argument: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_cascade: MissingCompileTimeError # Issue 32804
@@ -526,16 +594,13 @@
 void/void_type_usage_test/instance3_for_in: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance3_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance3_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_literal_map_value_init2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_null_dot: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_null_equals2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance3_void_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance3_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_argument: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_cascade: MissingCompileTimeError # Issue 32804
@@ -544,71 +609,110 @@
 void/void_type_usage_test/instance_for_in: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_literal_map_value_init2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_null_dot: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_null_equals2: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/instance_void_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/instance_while: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_addition: MissingCompileTimeError
 void/void_type_usage_test/local_argument: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_boolean_and_left: MissingCompileTimeError
+void/void_type_usage_test/local_boolean_and_right: MissingCompileTimeError
+void/void_type_usage_test/local_boolean_negation: MissingCompileTimeError
+void/void_type_usage_test/local_boolean_or_left: MissingCompileTimeError
+void/void_type_usage_test/local_boolean_or_right: MissingCompileTimeError
 void/void_type_usage_test/local_cascade: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_conditional_stmt: MissingCompileTimeError
 void/void_type_usage_test/local_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/local_dynamic_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_equals_left: MissingCompileTimeError
+void/void_type_usage_test/local_equals_right: MissingCompileTimeError
 void/void_type_usage_test/local_for_in: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_identical: MissingCompileTimeError
 void/void_type_usage_test/local_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/local_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/local_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/local_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/local_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/local_literal_map_value_init2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_multiplication: MissingCompileTimeError
 void/void_type_usage_test/local_null_dot: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/local_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/local_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/local_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/local_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/local_void_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/local_use_in_conditional_assignment_left: MissingCompileTimeError
+void/void_type_usage_test/local_use_in_conditional_assignment_right: MissingCompileTimeError
+void/void_type_usage_test/local_use_in_list_subscript: MissingCompileTimeError
+void/void_type_usage_test/local_use_in_map_lookup: MissingCompileTimeError
+void/void_type_usage_test/local_use_in_string_interpolation: MissingCompileTimeError
 void/void_type_usage_test/local_while: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_addition: MissingCompileTimeError
 void/void_type_usage_test/param_argument: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_boolean_and_left: MissingCompileTimeError
+void/void_type_usage_test/param_boolean_and_right: MissingCompileTimeError
+void/void_type_usage_test/param_boolean_negation: MissingCompileTimeError
+void/void_type_usage_test/param_boolean_or_left: MissingCompileTimeError
+void/void_type_usage_test/param_boolean_or_right: MissingCompileTimeError
 void/void_type_usage_test/param_cascade: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_conditional_stmt: MissingCompileTimeError
 void/void_type_usage_test/param_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/param_dynamic_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_equals_left: MissingCompileTimeError
+void/void_type_usage_test/param_equals_right: MissingCompileTimeError
 void/void_type_usage_test/param_for_in: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_identical: MissingCompileTimeError
 void/void_type_usage_test/param_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/param_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/param_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/param_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/param_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/param_literal_map_value_init2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_multiplication: MissingCompileTimeError
 void/void_type_usage_test/param_null_dot: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/param_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/param_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/param_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/param_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/param_void_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/param_use_in_conditional_assignment_left: MissingCompileTimeError
+void/void_type_usage_test/param_use_in_conditional_assignment_right: MissingCompileTimeError
+void/void_type_usage_test/param_use_in_list_subscript: MissingCompileTimeError
+void/void_type_usage_test/param_use_in_map_lookup: MissingCompileTimeError
+void/void_type_usage_test/param_use_in_string_interpolation: MissingCompileTimeError
 void/void_type_usage_test/param_while: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_addition: MissingCompileTimeError
 void/void_type_usage_test/paren_argument: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_boolean_and_left: MissingCompileTimeError
+void/void_type_usage_test/paren_boolean_and_right: MissingCompileTimeError
+void/void_type_usage_test/paren_boolean_negation: MissingCompileTimeError
+void/void_type_usage_test/paren_boolean_or_left: MissingCompileTimeError
+void/void_type_usage_test/paren_boolean_or_right: MissingCompileTimeError
 void/void_type_usage_test/paren_cascade: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_conditional_stmt: MissingCompileTimeError
 void/void_type_usage_test/paren_do_while: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/paren_dynamic_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_equals_left: MissingCompileTimeError
+void/void_type_usage_test/paren_equals_right: MissingCompileTimeError
 void/void_type_usage_test/paren_for_in: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_identical: MissingCompileTimeError
 void/void_type_usage_test/paren_is: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/paren_literal_list_init: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/paren_literal_map_key_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/paren_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/paren_literal_map_value_init: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/paren_literal_map_value_init2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_multiplication: MissingCompileTimeError
 void/void_type_usage_test/paren_null_dot: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/paren_null_equals2: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_null_equals1: MissingCompileTimeError
 void/void_type_usage_test/paren_return: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/paren_throw: MissingCompileTimeError # Issue 32804
 void/void_type_usage_test/paren_toString: MissingCompileTimeError # Issue 32804
-void/void_type_usage_test/paren_void_init: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/paren_use_in_conditional_assignment_right: MissingCompileTimeError
+void/void_type_usage_test/paren_use_in_list_subscript: MissingCompileTimeError
+void/void_type_usage_test/paren_use_in_map_lookup: MissingCompileTimeError
+void/void_type_usage_test/paren_use_in_string_interpolation: MissingCompileTimeError
 void/void_type_usage_test/paren_while: MissingCompileTimeError # Issue 32804
+void/void_type_usage_test/sync_use_in_yield: MissingCompileTimeError
+void/void_type_usage_test/sync_use_in_yield_star: MissingCompileTimeError
+void/void_type_usage_test/void_default_parameter_closure: MissingCompileTimeError
+void/void_type_usage_test/void_default_parameter_global: MissingCompileTimeError
 
 [ $compiler != dart2analyzer && $fasta && $strong ]
 map_literal3_test/03: MissingCompileTimeError
@@ -966,7 +1070,6 @@
 no_such_method_native_test: RuntimeError # Compares symbol #foobar with string "foobar" in noSuchMethod
 recursive_generic_test: RuntimeError # Compares a (dynamic) toString call to 'C<D>'
 tearoff_dynamic_test: RuntimeError # Compares call to "foo" (noSuchMethod) with string "foo"
-type_variable_promotion_test: RuntimeError # Compares runtime type to the string "List<B>"
 
 [ $compiler == fasta && $strong ]
 class_cycle_test/02: MissingCompileTimeError
@@ -1556,7 +1659,9 @@
 async_congruence_method_test/01: MissingCompileTimeError
 async_congruence_unnamed_test/01: MissingCompileTimeError
 async_congruence_unnamed_test/02: MissingCompileTimeError
+async_or_generator_return_type_stacktrace_test/01: MissingCompileTimeError
 async_return_types_test/tooManyTypeParameters: MissingCompileTimeError
+async_return_types_test/wrongReturnType: MissingCompileTimeError
 async_return_types_test/wrongTypeParameter: MissingCompileTimeError
 bad_named_parameters2_test/01: MissingCompileTimeError
 bad_named_parameters_test/01: MissingCompileTimeError
diff --git a/tests/language_2/language_2_precompiled.status b/tests/language_2/language_2_precompiled.status
index 1761256..cf38485 100644
--- a/tests/language_2/language_2_precompiled.status
+++ b/tests/language_2/language_2_precompiled.status
@@ -10,1147 +10,6 @@
 [ $arch == ia32 && $runtime == dart_precompiled ]
 vm/regress_24517_test: Pass, Fail # Issue 24517.
 
-[ $compiler == precompiler && $mode == debug && $runtime == dart_precompiled ]
-regress_29025_test: Crash # Issue dartbug.com/29331
-
-[ $compiler == precompiler && $runtime == dart_precompiled ]
-abstract_beats_arguments_test: MissingCompileTimeError
-abstract_exact_selector_test/01: MissingCompileTimeError
-abstract_factory_constructor_test/00: MissingCompileTimeError
-abstract_getter_test/01: MissingCompileTimeError
-abstract_override_adds_optional_args_concrete_subclass_test: MissingCompileTimeError
-abstract_override_adds_optional_args_concrete_test: MissingCompileTimeError
-abstract_override_adds_optional_args_supercall_test: MissingCompileTimeError
-abstract_syntax_test/00: MissingCompileTimeError
-additional_interface_adds_optional_args_concrete_subclass_test: MissingCompileTimeError
-additional_interface_adds_optional_args_concrete_test: MissingCompileTimeError
-additional_interface_adds_optional_args_supercall_test: MissingCompileTimeError
-argument_assignability_function_typed_test/01: MissingCompileTimeError
-argument_assignability_function_typed_test/02: MissingCompileTimeError
-argument_assignability_function_typed_test/03: RuntimeError
-argument_assignability_function_typed_test/04: RuntimeError
-argument_assignability_function_typed_test/05: RuntimeError
-assertion_initializer_const_function_test/01: MissingCompileTimeError
-assertion_test: RuntimeError # Issue 30326
-assign_static_type_test/01: MissingCompileTimeError
-assign_static_type_test/02: MissingCompileTimeError
-assign_static_type_test/03: MissingCompileTimeError
-assign_static_type_test/04: MissingCompileTimeError
-assign_static_type_test/05: MissingCompileTimeError
-assign_static_type_test/06: MissingCompileTimeError
-assign_to_type_test/01: MissingCompileTimeError
-assign_to_type_test/02: MissingCompileTimeError
-assign_to_type_test/03: MissingCompileTimeError
-assign_to_type_test/04: MissingCompileTimeError
-assign_top_method_test: MissingCompileTimeError
-async_await_syntax_test/a10a: MissingCompileTimeError
-async_await_syntax_test/b10a: MissingCompileTimeError
-async_await_syntax_test/c10a: MissingCompileTimeError
-async_await_syntax_test/d08b: MissingCompileTimeError
-async_await_syntax_test/d10a: MissingCompileTimeError
-async_congruence_local_test/01: MissingCompileTimeError
-async_congruence_local_test/02: MissingCompileTimeError
-async_congruence_local_test/none: RuntimeError
-async_congruence_method_test/01: MissingCompileTimeError
-async_congruence_method_test/none: RuntimeError
-async_congruence_top_level_test: RuntimeError
-async_congruence_unnamed_test/01: MissingCompileTimeError
-async_congruence_unnamed_test/02: MissingCompileTimeError
-async_congruence_unnamed_test/none: RuntimeError
-async_or_generator_return_type_stacktrace_test/01: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/02: MissingCompileTimeError
-async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError
-async_return_types_test/nestedFuture: MissingCompileTimeError
-async_return_types_test/tooManyTypeParameters: MissingCompileTimeError
-async_return_types_test/wrongReturnType: MissingCompileTimeError
-async_return_types_test/wrongTypeParameter: MissingCompileTimeError
-async_star_cancel_while_paused_test: RuntimeError
-async_star_pause_test: Fail, OK
-async_star_regression_2238_test: CompileTimeError, RuntimeError
-async_star_test/01: CompileTimeError # Issue 2238.
-bad_named_parameters2_test/01: MissingCompileTimeError
-bad_named_parameters_test/01: MissingCompileTimeError
-bad_named_parameters_test/02: MissingCompileTimeError
-bad_named_parameters_test/03: MissingCompileTimeError
-bad_named_parameters_test/04: MissingCompileTimeError
-bad_named_parameters_test/05: MissingCompileTimeError
-bad_override_test/01: MissingCompileTimeError
-bad_override_test/02: MissingCompileTimeError
-bad_override_test/06: MissingCompileTimeError
-bool_check_test: RuntimeError
-bool_condition_check_test: RuntimeError
-bug31436_test: RuntimeError
-bug32305_test: MissingCompileTimeError
-bug32372_test: RuntimeError
-built_in_identifier_prefix_test: CompileTimeError
-call_constructor_on_unresolvable_class_test/01: MissingCompileTimeError
-call_constructor_on_unresolvable_class_test/02: MissingCompileTimeError
-call_constructor_on_unresolvable_class_test/03: MissingCompileTimeError
-call_method_as_cast_test/01: RuntimeError
-call_method_as_cast_test/02: RuntimeError
-call_method_as_cast_test/03: RuntimeError
-call_method_as_cast_test/04: RuntimeError
-call_method_as_cast_test/05: RuntimeError
-call_method_implicit_tear_off_assignable_test: RuntimeError
-call_method_implicit_tear_off_implements_function_test/01: RuntimeError
-call_method_implicit_tear_off_implements_function_test/02: RuntimeError
-call_method_implicit_tear_off_implements_function_test/03: RuntimeError
-call_method_implicit_tear_off_implements_function_test/04: RuntimeError
-call_method_implicit_tear_off_test/01: RuntimeError
-call_method_implicit_tear_off_test/02: RuntimeError
-call_method_implicit_tear_off_test/03: RuntimeError
-call_method_implicit_tear_off_test/04: RuntimeError
-call_method_implicit_tear_off_test/05: RuntimeError
-call_method_implicit_tear_off_test/06: RuntimeError
-call_method_is_check_test/01: RuntimeError
-call_method_is_check_test/02: RuntimeError
-call_method_is_check_test/03: RuntimeError
-call_method_is_check_test/04: RuntimeError
-call_method_is_check_test/05: RuntimeError
-call_method_must_not_be_field_test/01: MissingCompileTimeError
-call_method_must_not_be_field_test/02: MissingCompileTimeError
-call_method_must_not_be_field_test/03: RuntimeError
-call_method_must_not_be_getter_test/01: MissingCompileTimeError
-call_method_must_not_be_getter_test/02: MissingCompileTimeError
-call_method_must_not_be_getter_test/03: RuntimeError
-call_method_override_test/01: MissingCompileTimeError
-call_method_override_test/02: MissingCompileTimeError
-call_non_method_field_test/01: MissingCompileTimeError
-call_non_method_field_test/02: MissingCompileTimeError
-call_nonexistent_constructor_test/01: MissingCompileTimeError
-call_nonexistent_constructor_test/02: MissingCompileTimeError
-call_nonexistent_static_test/01: MissingCompileTimeError
-call_nonexistent_static_test/02: MissingCompileTimeError
-call_nonexistent_static_test/03: MissingCompileTimeError
-call_nonexistent_static_test/04: MissingCompileTimeError
-call_nonexistent_static_test/05: MissingCompileTimeError
-call_nonexistent_static_test/06: MissingCompileTimeError
-call_nonexistent_static_test/07: MissingCompileTimeError
-call_nonexistent_static_test/08: MissingCompileTimeError
-call_nonexistent_static_test/09: MissingCompileTimeError
-call_nonexistent_static_test/10: MissingCompileTimeError
-call_through_getter_test/01: MissingCompileTimeError
-call_through_getter_test/02: MissingCompileTimeError
-call_type_literal_test/01: MissingCompileTimeError
-callable_test/00: MissingCompileTimeError
-callable_test/01: MissingCompileTimeError
-cast_test/04: MissingCompileTimeError
-cast_test/05: MissingCompileTimeError
-check_member_static_test/01: MissingCompileTimeError
-check_method_override_test/01: MissingCompileTimeError
-check_method_override_test/02: MissingCompileTimeError
-checked_null_test/01: MissingCompileTimeError
-checked_setter3_test/01: MissingCompileTimeError
-checked_setter3_test/02: MissingCompileTimeError
-checked_setter3_test/03: MissingCompileTimeError
-class_keyword_test/02: MissingCompileTimeError # Issue 13627
-class_literal_test/01: MissingCompileTimeError
-class_literal_test/02: MissingCompileTimeError
-class_literal_test/03: MissingCompileTimeError
-class_literal_test/04: MissingCompileTimeError
-class_literal_test/05: MissingCompileTimeError
-class_literal_test/06: MissingCompileTimeError
-class_literal_test/07: MissingCompileTimeError
-class_literal_test/08: MissingCompileTimeError
-class_literal_test/09: MissingCompileTimeError
-class_literal_test/10: MissingCompileTimeError
-class_literal_test/11: MissingCompileTimeError
-class_literal_test/12: MissingCompileTimeError
-class_literal_test/13: MissingCompileTimeError
-class_literal_test/14: MissingCompileTimeError
-class_literal_test/15: MissingCompileTimeError
-class_literal_test/16: MissingCompileTimeError
-class_literal_test/17: MissingCompileTimeError
-class_literal_test/18: MissingCompileTimeError
-class_literal_test/19: MissingCompileTimeError
-class_literal_test/20: MissingCompileTimeError
-class_literal_test/21: MissingCompileTimeError
-class_literal_test/22: MissingCompileTimeError
-class_literal_test/23: MissingCompileTimeError
-class_literal_test/24: MissingCompileTimeError
-class_literal_test/25: MissingCompileTimeError
-closure_invoked_through_interface_target_field_test: MissingCompileTimeError
-closure_invoked_through_interface_target_getter_test: MissingCompileTimeError
-closure_param_null_to_object_test: RuntimeError
-compile_time_constant_o_test/01: MissingCompileTimeError
-compile_time_constant_o_test/02: MissingCompileTimeError
-conditional_method_invocation_test/05: MissingCompileTimeError
-conditional_method_invocation_test/06: MissingCompileTimeError
-conditional_method_invocation_test/07: MissingCompileTimeError
-conditional_method_invocation_test/08: MissingCompileTimeError
-conditional_method_invocation_test/12: MissingCompileTimeError
-conditional_method_invocation_test/13: MissingCompileTimeError
-conditional_method_invocation_test/18: MissingCompileTimeError
-conditional_method_invocation_test/19: MissingCompileTimeError
-conditional_property_access_test/04: MissingCompileTimeError
-conditional_property_access_test/05: MissingCompileTimeError
-conditional_property_access_test/06: MissingCompileTimeError
-conditional_property_access_test/10: MissingCompileTimeError
-conditional_property_access_test/11: MissingCompileTimeError
-conditional_property_access_test/16: MissingCompileTimeError
-conditional_property_access_test/17: MissingCompileTimeError
-conditional_property_assignment_test/04: MissingCompileTimeError
-conditional_property_assignment_test/05: MissingCompileTimeError
-conditional_property_assignment_test/06: MissingCompileTimeError
-conditional_property_assignment_test/10: MissingCompileTimeError
-conditional_property_assignment_test/11: MissingCompileTimeError
-conditional_property_assignment_test/12: MissingCompileTimeError
-conditional_property_assignment_test/13: MissingCompileTimeError
-conditional_property_assignment_test/27: MissingCompileTimeError
-conditional_property_assignment_test/28: MissingCompileTimeError
-conditional_property_assignment_test/32: MissingCompileTimeError
-conditional_property_assignment_test/33: MissingCompileTimeError
-conditional_property_assignment_test/34: MissingCompileTimeError
-conditional_property_assignment_test/35: MissingCompileTimeError
-conditional_property_increment_decrement_test/04: MissingCompileTimeError
-conditional_property_increment_decrement_test/08: MissingCompileTimeError
-conditional_property_increment_decrement_test/12: MissingCompileTimeError
-conditional_property_increment_decrement_test/16: MissingCompileTimeError
-conditional_property_increment_decrement_test/21: MissingCompileTimeError
-conditional_property_increment_decrement_test/22: MissingCompileTimeError
-conditional_property_increment_decrement_test/27: MissingCompileTimeError
-conditional_property_increment_decrement_test/28: MissingCompileTimeError
-conditional_property_increment_decrement_test/33: MissingCompileTimeError
-conditional_property_increment_decrement_test/34: MissingCompileTimeError
-conditional_property_increment_decrement_test/39: MissingCompileTimeError
-conditional_property_increment_decrement_test/40: MissingCompileTimeError
-conflicting_generic_interfaces_simple_test: MissingCompileTimeError
-const_constructor2_test/05: MissingCompileTimeError
-const_constructor2_test/06: MissingCompileTimeError
-const_constructor3_test/02: MissingCompileTimeError
-const_constructor3_test/04: MissingCompileTimeError
-const_dynamic_type_literal_test/02: MissingCompileTimeError
-const_evaluation_test: SkipByDesign
-const_init2_test/02: MissingCompileTimeError
-const_types_test/01: MissingCompileTimeError
-const_types_test/02: MissingCompileTimeError
-const_types_test/03: MissingCompileTimeError
-const_types_test/04: MissingCompileTimeError
-const_types_test/05: MissingCompileTimeError
-const_types_test/06: MissingCompileTimeError
-const_types_test/13: MissingCompileTimeError
-const_types_test/34: MissingCompileTimeError
-const_types_test/35: MissingCompileTimeError
-const_types_test/39: MissingCompileTimeError
-const_types_test/40: MissingCompileTimeError
-constructor13_test/01: MissingCompileTimeError
-constructor13_test/02: MissingCompileTimeError
-constructor3_test: Fail, OK, Pass
-constructor_call_as_function_test/01: MissingCompileTimeError
-covariant_override/runtime_check_test: RuntimeError
-covariant_subtyping_tearoff1_test: RuntimeError
-covariant_subtyping_tearoff2_test: RuntimeError
-covariant_subtyping_tearoff3_test: RuntimeError
-covariant_subtyping_test: RuntimeError
-covariant_subtyping_unsafe_call1_test: RuntimeError
-covariant_subtyping_unsafe_call2_test: RuntimeError
-covariant_subtyping_unsafe_call3_test: RuntimeError
-covariant_subtyping_with_substitution_test: RuntimeError
-covariant_tear_off_type_test: RuntimeError
-create_unresolved_type_test/01: MissingCompileTimeError
-ct_const2_test: Skip # Incompatible flag: --compile_all
-cyclic_type2_test: Fail, OK # Non-contractive types are not supported in the vm.
-cyclic_type_test/02: Fail, OK # Non-contractive types are not supported in the vm.
-cyclic_type_test/04: Fail, OK # Non-contractive types are not supported in the vm.
-cyclic_type_variable_test/01: MissingCompileTimeError
-cyclic_type_variable_test/02: MissingCompileTimeError
-cyclic_type_variable_test/03: MissingCompileTimeError
-cyclic_type_variable_test/04: MissingCompileTimeError
-cyclic_typedef_test/13: MissingCompileTimeError
-default_factory2_test/01: MissingCompileTimeError
-default_factory_test/01: MissingCompileTimeError
-deferred_constraints_constants_test: SkipByDesign
-deferred_constraints_type_annotation_test/as_operation: MissingCompileTimeError
-deferred_constraints_type_annotation_test/catch_check: MissingCompileTimeError
-deferred_constraints_type_annotation_test/is_check: MissingCompileTimeError
-deferred_constraints_type_annotation_test/new_before_load: MissingCompileTimeError
-deferred_constraints_type_annotation_test/new_generic2: MissingCompileTimeError
-deferred_constraints_type_annotation_test/new_generic3: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation1: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation_generic1: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation_generic2: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation_generic3: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation_generic4: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation_null: MissingCompileTimeError
-deferred_constraints_type_annotation_test/type_annotation_top_level: MissingCompileTimeError
-deferred_global_test: Fail
-deferred_inheritance_constraints_test/redirecting_constructor: MissingCompileTimeError
-deferred_load_constants_test/02: Fail
-deferred_load_constants_test/03: Fail
-deferred_load_constants_test/05: Fail
-deferred_not_loaded_check_test: RuntimeError
-deferred_redirecting_factory_test: Fail, Crash # Issue 23408
-deopt_inlined_function_lazy_test: Skip # Incompatible flag: --deoptimize-alot
-dynamic_field_test/01: MissingCompileTimeError
-dynamic_field_test/02: MissingCompileTimeError
-dynamic_prefix_core_test/01: MissingCompileTimeError
-dynamic_prefix_core_test/01: RuntimeError # Issue 12478
-dynamic_prefix_core_test/none: RuntimeError
-empty_block_case_test: MissingCompileTimeError
-enum_mirror_test: SkipByDesign
-enum_private_test/02: MissingCompileTimeError
-error_stacktrace_test/00: MissingCompileTimeError
-example_constructor_test: Fail, OK
-export_ambiguous_main_negative_test: Fail # Issue 14763
-export_ambiguous_main_negative_test: Skip # Issue 29895
-export_ambiguous_main_test: Crash
-export_double_same_main_test: Skip # Issue 29895
-f_bounded_quantification_test/01: MissingCompileTimeError
-f_bounded_quantification_test/02: MissingCompileTimeError
-factory1_test/00: MissingCompileTimeError
-factory1_test/01: MissingCompileTimeError
-factory2_test/03: MissingCompileTimeError
-factory2_test/none: MissingCompileTimeError
-factory3_test/none: MissingCompileTimeError
-factory4_test/00: MissingCompileTimeError
-factory5_test/00: MissingCompileTimeError
-factory6_test/00: MissingCompileTimeError
-factory_redirection_test/01: MissingCompileTimeError
-factory_redirection_test/02: MissingCompileTimeError
-factory_redirection_test/03: MissingCompileTimeError
-factory_redirection_test/05: MissingCompileTimeError
-factory_redirection_test/06: MissingCompileTimeError
-factory_redirection_test/08: MissingCompileTimeError
-factory_redirection_test/09: MissingCompileTimeError
-factory_redirection_test/10: MissingCompileTimeError
-factory_redirection_test/11: MissingCompileTimeError
-factory_redirection_test/12: MissingCompileTimeError
-factory_redirection_test/13: MissingCompileTimeError
-factory_redirection_test/14: MissingCompileTimeError
-factory_redirection_test/none: MissingCompileTimeError
-factory_return_type_checked_test/00: MissingCompileTimeError
-field3_test/01: MissingCompileTimeError
-field_increment_bailout_test: SkipByDesign
-field_initialization_order_test: Fail, OK
-field_method4_test: MissingCompileTimeError
-field_override2_test: MissingCompileTimeError
-field_override_optimization_test: RuntimeError
-field_override_test/00: MissingCompileTimeError
-field_override_test/01: MissingCompileTimeError
-field_override_test/02: MissingCompileTimeError
-field_override_test/none: MissingCompileTimeError
-field_type_check2_test/01: MissingRuntimeError
-field_type_check_test/01: MissingCompileTimeError
-final_for_in_variable_test: MissingCompileTimeError
-final_param_test: MissingCompileTimeError
-final_super_field_set_test: MissingCompileTimeError
-final_syntax_test/10: MissingCompileTimeError
-final_variable_assignment_test/01: MissingCompileTimeError
-final_variable_assignment_test/02: MissingCompileTimeError
-final_variable_assignment_test/03: MissingCompileTimeError
-final_variable_assignment_test/04: MissingCompileTimeError
-first_class_types_literals_test/03: MissingCompileTimeError
-first_class_types_literals_test/04: MissingCompileTimeError
-first_class_types_literals_test/05: MissingCompileTimeError
-first_class_types_literals_test/06: MissingCompileTimeError
-first_class_types_literals_test/07: MissingCompileTimeError
-first_class_types_literals_test/08: MissingCompileTimeError
-first_class_types_literals_test/09: MissingCompileTimeError
-first_class_types_literals_test/10: MissingCompileTimeError
-first_class_types_literals_test/11: MissingCompileTimeError
-first_class_types_literals_test/12: MissingCompileTimeError
-flatten_test/05: MissingRuntimeError
-flatten_test/08: MissingRuntimeError
-flatten_test/09: MissingRuntimeError
-flatten_test/12: MissingRuntimeError
-for_in3_test: MissingCompileTimeError
-for_in_side_effects_test/01: MissingCompileTimeError
-function_malformed_result_type_test/00: MissingCompileTimeError
-function_propagation_test: RuntimeError
-function_subtype3_test: RuntimeError
-function_subtype_bound_closure3_test: RuntimeError
-function_subtype_bound_closure4_test: RuntimeError
-function_subtype_bound_closure7_test: RuntimeError
-function_subtype_call0_test: RuntimeError
-function_subtype_call1_test: RuntimeError
-function_subtype_call2_test: RuntimeError
-function_subtype_cast0_test: RuntimeError
-function_subtype_cast1_test: RuntimeError
-function_subtype_checked0_test: RuntimeError
-function_subtype_closure0_test: RuntimeError
-function_subtype_closure1_test: RuntimeError
-function_subtype_factory1_test: RuntimeError
-function_subtype_inline1_test: RuntimeError
-function_subtype_inline2_test: RuntimeError
-function_subtype_named1_test: RuntimeError
-function_subtype_named2_test: RuntimeError
-function_subtype_not1_test: RuntimeError
-function_subtype_optional1_test: RuntimeError
-function_subtype_optional2_test: RuntimeError
-function_subtype_regression_ddc_588_test: RuntimeError
-function_subtype_setter0_test: RuntimeError
-function_subtype_typearg2_test: RuntimeError
-function_subtype_typearg3_test: RuntimeError
-function_subtype_typearg5_test: RuntimeError
-function_type2_test: RuntimeError
-function_type_alias2_test: RuntimeError
-function_type_alias_test: RuntimeError
-function_type_call_getter2_test/00: MissingCompileTimeError
-function_type_call_getter2_test/01: MissingCompileTimeError
-function_type_call_getter2_test/02: MissingCompileTimeError
-function_type_call_getter2_test/03: MissingCompileTimeError
-function_type_call_getter2_test/04: MissingCompileTimeError
-function_type_call_getter2_test/05: MissingCompileTimeError
-fuzzy_arrows_test/01: MissingCompileTimeError
-fuzzy_arrows_test/03: RuntimeError
-generic_constructor_mixin2_test/01: MissingCompileTimeError
-generic_constructor_mixin3_test/01: MissingCompileTimeError
-generic_constructor_mixin_test/01: MissingCompileTimeError
-generic_field_mixin6_test/01: MissingCompileTimeError
-generic_function_bounds_test: RuntimeError
-generic_function_dcall_test: RuntimeError
-generic_function_type_as_type_argument_test/02: MissingCompileTimeError, OK # No type inference
-generic_function_typedef2_test/04: MissingCompileTimeError
-generic_function_typedef_test/01: RuntimeError
-generic_instanceof_test: RuntimeError
-generic_list_checked_test: RuntimeError
-generic_method_types_test/02: RuntimeError, OK # No support for covariant tear-off in VM.
-generic_methods_bounds_test/01: MissingCompileTimeError
-generic_methods_bounds_test/02: MissingRuntimeError
-generic_methods_dynamic_test/01: MissingCompileTimeError
-generic_methods_dynamic_test/03: MissingCompileTimeError
-generic_methods_generic_class_tearoff_test: RuntimeError
-generic_methods_named_parameters_test: RuntimeError
-generic_methods_optional_parameters_test: RuntimeError
-generic_methods_overriding_test/01: MissingCompileTimeError
-generic_methods_overriding_test/03: MissingCompileTimeError
-generic_methods_recursive_bound_test/02: MissingCompileTimeError
-generic_methods_recursive_bound_test/02: Crash
-generic_methods_recursive_bound_test/03: Crash, Pass
-generic_methods_tearoff_specialization_test: RuntimeError
-generic_methods_unused_parameter_test: RuntimeError
-generic_tearoff_test: RuntimeError
-getter_no_setter2_test/00: MissingCompileTimeError
-getter_no_setter2_test/01: MissingCompileTimeError
-getter_no_setter2_test/03: MissingCompileTimeError
-getter_no_setter_test/00: MissingCompileTimeError
-getter_no_setter_test/01: MissingCompileTimeError
-getter_no_setter_test/03: MissingCompileTimeError
-getter_override_test/03: MissingCompileTimeError
-getters_setters2_test/01: RuntimeError
-getters_setters2_test/02: MissingCompileTimeError
-getters_setters2_test/none: RuntimeError
-hello_dart_test: Skip # Incompatible flag: --compile_all
-identical_const_test/01: MissingCompileTimeError
-identical_const_test/02: MissingCompileTimeError
-identical_const_test/03: MissingCompileTimeError
-identical_const_test/04: MissingCompileTimeError
-if_null_assignment_behavior_test/03: MissingCompileTimeError
-if_null_assignment_behavior_test/13: MissingCompileTimeError
-if_null_assignment_behavior_test/15: MissingCompileTimeError
-if_null_assignment_static_test/02: MissingCompileTimeError
-if_null_assignment_static_test/04: MissingCompileTimeError
-if_null_assignment_static_test/06: MissingCompileTimeError
-if_null_assignment_static_test/07: MissingCompileTimeError
-if_null_assignment_static_test/09: MissingCompileTimeError
-if_null_assignment_static_test/11: MissingCompileTimeError
-if_null_assignment_static_test/13: MissingCompileTimeError
-if_null_assignment_static_test/14: MissingCompileTimeError
-if_null_assignment_static_test/16: MissingCompileTimeError
-if_null_assignment_static_test/18: MissingCompileTimeError
-if_null_assignment_static_test/20: MissingCompileTimeError
-if_null_assignment_static_test/21: MissingCompileTimeError
-if_null_assignment_static_test/23: MissingCompileTimeError
-if_null_assignment_static_test/25: MissingCompileTimeError
-if_null_assignment_static_test/27: MissingCompileTimeError
-if_null_assignment_static_test/28: MissingCompileTimeError
-if_null_assignment_static_test/30: MissingCompileTimeError
-if_null_assignment_static_test/32: MissingCompileTimeError
-if_null_assignment_static_test/34: MissingCompileTimeError
-if_null_assignment_static_test/35: MissingCompileTimeError
-if_null_assignment_static_test/37: MissingCompileTimeError
-if_null_assignment_static_test/39: MissingCompileTimeError
-if_null_assignment_static_test/41: MissingCompileTimeError
-if_null_assignment_static_test/42: MissingCompileTimeError
-if_null_precedence_test/06: MissingCompileTimeError
-if_null_precedence_test/07: MissingCompileTimeError
-if_null_precedence_test/none: RuntimeError
-implicit_closure_test: Skip # Incompatible flag: --use_slow_path
-implicit_downcast_during_for_in_iterable_test: RuntimeError
-implicit_downcast_during_function_literal_arrow_test: RuntimeError
-implicit_downcast_during_function_literal_return_test: RuntimeError
-implicit_downcast_during_yield_star_test: RuntimeError
-implicit_downcast_during_yield_test: RuntimeError
-implicit_this_test/01: MissingCompileTimeError
-implicit_this_test/02: MissingCompileTimeError
-implicit_this_test/04: MissingCompileTimeError
-import_combinators2_test/00: MissingCompileTimeError
-import_self_test/01: MissingCompileTimeError
-inferrer_constructor5_test/01: MissingCompileTimeError
-inferrer_synthesized_constructor_test: RuntimeError
-initializing_formal_final_test: MissingCompileTimeError
-initializing_formal_type_test: MissingCompileTimeError
-instance_creation_in_function_annotation_test: SkipByDesign
-instanceof2_test: RuntimeError
-instanceof4_test/01: RuntimeError
-instanceof4_test/none: RuntimeError
-instantiate_tearoff_after_contravariance_check_test: RuntimeError
-instantiate_tearoff_of_call_test: RuntimeError
-instantiate_tearoff_test: RuntimeError
-interface_test/00: MissingCompileTimeError
-invalid_cast_test/01: MissingCompileTimeError
-invalid_cast_test/02: MissingCompileTimeError
-invalid_cast_test/03: MissingCompileTimeError
-invalid_cast_test/04: MissingCompileTimeError
-invalid_cast_test/07: MissingCompileTimeError
-invalid_cast_test/08: MissingCompileTimeError
-invalid_cast_test/09: MissingCompileTimeError
-invalid_cast_test/10: MissingCompileTimeError
-invalid_cast_test/11: MissingCompileTimeError
-invocation_mirror2_test: SkipByDesign
-invocation_mirror_invoke_on2_test: SkipByDesign
-invocation_mirror_invoke_on_test: SkipByDesign
-issue21079_test: SkipByDesign
-issue31596_override_test/05: MissingCompileTimeError
-issue31596_override_test/06: MissingCompileTimeError
-issue31596_override_test/07: MissingCompileTimeError
-issue31596_override_test/08: MissingCompileTimeError
-issue31596_super_test/02: MissingCompileTimeError
-issue31596_super_test/04: MissingCompileTimeError
-issue31596_super_test/05: RuntimeError
-issue31596_tearoff_test: RuntimeError
-issue32353_test: RuntimeError
-language_2/least_upper_bound_expansive_test/none: CompileTimeError
-least_upper_bound_expansive_test/none: CompileTimeError
-least_upper_bound_test/03: MissingCompileTimeError
-least_upper_bound_test/04: MissingCompileTimeError
-least_upper_bound_test/10: MissingCompileTimeError
-least_upper_bound_test/19: MissingCompileTimeError
-least_upper_bound_test/20: MissingCompileTimeError
-least_upper_bound_test/23: MissingCompileTimeError
-least_upper_bound_test/24: MissingCompileTimeError
-least_upper_bound_test/29: MissingCompileTimeError
-least_upper_bound_test/30: MissingCompileTimeError
-least_upper_bound_test/32: MissingCompileTimeError
-library_ambiguous_test/00: MissingCompileTimeError
-library_ambiguous_test/01: MissingCompileTimeError
-library_ambiguous_test/02: MissingCompileTimeError
-library_ambiguous_test/03: MissingCompileTimeError
-library_ambiguous_test/04: MissingCompileTimeError
-library_env_test/has_html_support: RuntimeError, OK
-library_env_test/has_mirror_support: RuntimeError, OK
-library_env_test/has_no_io_support: RuntimeError, OK
-list_literal1_test/01: MissingCompileTimeError
-list_literal4_test/00: MissingCompileTimeError
-list_literal4_test/01: MissingCompileTimeError
-list_literal4_test/03: MissingCompileTimeError
-list_literal4_test/04: MissingCompileTimeError
-list_literal4_test/05: MissingCompileTimeError
-list_literal_syntax_test/01: MissingCompileTimeError
-list_literal_syntax_test/02: MissingCompileTimeError
-list_literal_syntax_test/03: MissingCompileTimeError
-local_function2_test/01: MissingCompileTimeError
-local_function2_test/02: MissingCompileTimeError
-local_function2_test/none: RuntimeError
-local_function3_test/01: MissingCompileTimeError
-local_function3_test/none: RuntimeError
-local_function_test/01: MissingCompileTimeError
-local_function_test/02: MissingCompileTimeError
-local_function_test/03: MissingCompileTimeError
-local_function_test/04: MissingCompileTimeError
-local_function_test/none: RuntimeError
-logical_expression3_test: MissingCompileTimeError
-main_not_a_function_test: Skip
-main_test/03: RuntimeError
-malbounded_instantiation_test/01: MissingCompileTimeError
-malbounded_instantiation_test/02: MissingCompileTimeError
-malbounded_instantiation_test/03: MissingCompileTimeError
-malbounded_redirecting_factory_test/02: MissingCompileTimeError
-malbounded_redirecting_factory_test/03: MissingCompileTimeError
-malbounded_redirecting_factory_test/04: MissingCompileTimeError
-malbounded_redirecting_factory_test/05: MissingCompileTimeError
-malbounded_type_cast2_test: MissingCompileTimeError
-malbounded_type_cast_test/00: MissingCompileTimeError
-malbounded_type_cast_test/01: MissingCompileTimeError
-malbounded_type_cast_test/02: MissingCompileTimeError
-malbounded_type_cast_test/none: RuntimeError
-malbounded_type_literal_test/00: MissingCompileTimeError
-malbounded_type_test2_test/00: MissingCompileTimeError
-malbounded_type_test_test/00: MissingCompileTimeError
-malbounded_type_test_test/01: MissingCompileTimeError
-malbounded_type_test_test/02: MissingCompileTimeError
-malbounded_type_test_test/none: RuntimeError
-malformed2_test/00: MissingCompileTimeError
-malformed2_test/01: MissingCompileTimeError
-malformed2_test/02: MissingCompileTimeError
-malformed2_test/03: MissingCompileTimeError
-malformed2_test/04: MissingCompileTimeError
-malformed2_test/05: MissingCompileTimeError
-malformed2_test/06: MissingCompileTimeError
-malformed2_test/07: MissingCompileTimeError
-malformed2_test/08: MissingCompileTimeError
-malformed2_test/09: MissingCompileTimeError
-malformed2_test/10: MissingCompileTimeError
-malformed2_test/11: MissingCompileTimeError
-malformed2_test/12: MissingCompileTimeError
-malformed2_test/13: MissingCompileTimeError
-malformed_bound_test/00: MissingCompileTimeError
-malformed_bound_test/01: MissingCompileTimeError
-malformed_inheritance_test/01: MissingCompileTimeError
-malformed_inheritance_test/03: MissingCompileTimeError
-malformed_inheritance_test/05: MissingCompileTimeError
-malformed_test/00: MissingCompileTimeError
-malformed_test/01: MissingCompileTimeError
-malformed_test/02: MissingCompileTimeError
-malformed_test/03: MissingCompileTimeError
-malformed_test/04: MissingCompileTimeError
-malformed_test/05: MissingCompileTimeError
-malformed_test/06: MissingCompileTimeError
-malformed_test/07: MissingCompileTimeError
-malformed_test/08: MissingCompileTimeError
-malformed_test/09: MissingCompileTimeError
-malformed_test/10: MissingCompileTimeError
-malformed_test/11: MissingCompileTimeError
-malformed_test/12: MissingCompileTimeError
-malformed_test/13: MissingCompileTimeError
-malformed_test/14: MissingCompileTimeError
-malformed_test/15: MissingCompileTimeError
-malformed_test/16: MissingCompileTimeError
-malformed_test/17: MissingCompileTimeError
-malformed_test/18: MissingCompileTimeError
-malformed_test/19: MissingCompileTimeError
-malformed_test/20: MissingCompileTimeError
-malformed_test/21: MissingCompileTimeError
-malformed_test/22: MissingCompileTimeError
-malformed_test/23: MissingCompileTimeError
-malformed_test/24: MissingCompileTimeError
-malformed_type_test: MissingCompileTimeError
-many_generic_instanceof_test: RuntimeError
-many_overridden_no_such_method_test: SkipByDesign
-map_literal8_test: RuntimeError
-method_override2_test/*: MissingCompileTimeError
-method_override2_test/none: Pass
-method_override3_test/*: MissingCompileTimeError
-method_override3_test/none: Pass
-method_override4_test/*: MissingCompileTimeError
-method_override4_test/none: Pass
-method_override5_test/*: MissingCompileTimeError
-method_override5_test/none: Pass
-method_override6_test/*: MissingCompileTimeError
-method_override6_test/none: Pass
-method_override7_test/03: MissingCompileTimeError
-method_override8_test/03: MissingCompileTimeError
-method_override_test: RuntimeError, OK # No support for covariant tear-off in VM.
-mixin_illegal_constructor_test/13: MissingCompileTimeError
-mixin_illegal_constructor_test/14: MissingCompileTimeError
-mixin_illegal_constructor_test/15: MissingCompileTimeError
-mixin_illegal_constructor_test/16: MissingCompileTimeError
-mixin_illegal_static_access_test/01: MissingCompileTimeError
-mixin_illegal_static_access_test/02: MissingCompileTimeError
-mixin_illegal_super_use_test: Skip # Issues 24478 and 23773
-mixin_illegal_superclass_test: Skip # Issues 24478 and 23773
-mixin_illegal_syntax_test/13: MissingCompileTimeError
-mixin_invalid_bound2_test/02: MissingCompileTimeError
-mixin_invalid_bound2_test/03: MissingCompileTimeError
-mixin_invalid_bound2_test/04: MissingCompileTimeError
-mixin_invalid_bound2_test/05: MissingCompileTimeError
-mixin_invalid_bound2_test/06: MissingCompileTimeError
-mixin_invalid_bound2_test/07: MissingCompileTimeError
-mixin_invalid_bound2_test/08: MissingCompileTimeError
-mixin_invalid_bound2_test/09: MissingCompileTimeError
-mixin_invalid_bound2_test/10: MissingCompileTimeError
-mixin_invalid_bound2_test/11: MissingCompileTimeError
-mixin_invalid_bound2_test/12: MissingCompileTimeError
-mixin_invalid_bound2_test/13: MissingCompileTimeError
-mixin_invalid_bound2_test/14: MissingCompileTimeError
-mixin_invalid_bound2_test/15: MissingCompileTimeError
-mixin_invalid_bound_test/02: MissingCompileTimeError
-mixin_invalid_bound_test/03: MissingCompileTimeError
-mixin_invalid_bound_test/04: MissingCompileTimeError
-mixin_invalid_bound_test/05: MissingCompileTimeError
-mixin_invalid_bound_test/06: MissingCompileTimeError
-mixin_invalid_bound_test/07: MissingCompileTimeError
-mixin_invalid_bound_test/08: MissingCompileTimeError
-mixin_invalid_bound_test/09: MissingCompileTimeError
-mixin_invalid_bound_test/10: MissingCompileTimeError
-mixin_of_mixin_test/01: MissingCompileTimeError
-mixin_of_mixin_test/02: MissingCompileTimeError
-mixin_of_mixin_test/03: MissingCompileTimeError
-mixin_of_mixin_test/04: MissingCompileTimeError
-mixin_of_mixin_test/05: MissingCompileTimeError
-mixin_of_mixin_test/06: MissingCompileTimeError
-mixin_super_2_test/01: MissingCompileTimeError
-mixin_super_2_test/03: MissingCompileTimeError
-mixin_super_bound_test/01: MissingCompileTimeError
-mixin_super_bound_test/02: MissingCompileTimeError
-mixin_supertype_subclass_test/02: MissingCompileTimeError
-mixin_supertype_subclass_test/05: MissingCompileTimeError
-mixin_type_parameter_inference_error_test/01: MissingCompileTimeError
-mixin_type_parameter_inference_error_test/02: MissingCompileTimeError
-mixin_type_parameter_inference_error_test/03: MissingCompileTimeError
-mixin_type_parameter_inference_error_test/04: MissingCompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/03: MissingCompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/04: MissingCompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/05: RuntimeError
-mixin_type_parameter_inference_test/04: MissingCompileTimeError
-mixin_type_parameter_inference_test/05: MissingCompileTimeError
-mixin_type_parameter_inference_test/06: MissingCompileTimeError
-mixin_type_parameter_inference_test/07: MissingCompileTimeError
-mixin_type_parameter_inference_test/08: RuntimeError
-mixin_type_parameter_inference_test/09: RuntimeError
-mixin_type_parameter_inference_test/11: MissingCompileTimeError
-mixin_type_parameter_inference_test/14: MissingCompileTimeError
-mixin_type_parameter_inference_test/15: MissingCompileTimeError
-mixin_type_parameters_errors_test/01: MissingCompileTimeError
-mixin_type_parameters_errors_test/02: MissingCompileTimeError
-mixin_type_parameters_errors_test/03: MissingCompileTimeError
-mixin_type_parameters_errors_test/04: MissingCompileTimeError
-mixin_type_parameters_errors_test/05: MissingCompileTimeError
-mixin_type_parameters_mixin_extends_test: RuntimeError
-mixin_type_parameters_mixin_test: RuntimeError
-mixin_type_parameters_super_extends_test: RuntimeError
-mixin_type_parameters_super_test: RuntimeError
-mixin_with_two_implicit_constructors_test: MissingCompileTimeError
-mock_writable_final_private_field_test: RuntimeError
-multiline_strings_test: Fail # Issue 23020
-named_constructor_test/01: MissingCompileTimeError
-named_constructor_test/03: MissingCompileTimeError
-named_parameters2_test: MissingCompileTimeError
-named_parameters3_test: MissingCompileTimeError
-named_parameters4_test: MissingCompileTimeError
-named_parameters_aggregated_test/05: MissingCompileTimeError
-named_parameters_test/01: MissingCompileTimeError
-named_parameters_test/02: MissingCompileTimeError
-named_parameters_test/03: MissingCompileTimeError
-named_parameters_test/04: MissingCompileTimeError
-named_parameters_test/05: MissingCompileTimeError
-named_parameters_test/06: MissingCompileTimeError
-named_parameters_test/07: MissingCompileTimeError
-named_parameters_test/08: MissingCompileTimeError
-named_parameters_test/09: MissingCompileTimeError
-named_parameters_test/10: MissingCompileTimeError
-named_parameters_type_test/01: MissingCompileTimeError
-named_parameters_type_test/02: MissingCompileTimeError
-named_parameters_type_test/03: MissingCompileTimeError
-new_expression_type_args_test/00: MissingCompileTimeError
-new_expression_type_args_test/01: MissingCompileTimeError
-new_expression_type_args_test/02: MissingCompileTimeError
-new_prefix_test/01: MissingCompileTimeError
-no_main_test/01: Skip
-no_such_constructor_test/01: MissingCompileTimeError
-no_such_method_mock_test: RuntimeError
-no_such_method_test: SkipByDesign
-not_enough_positional_arguments_test/00: MissingCompileTimeError
-not_enough_positional_arguments_test/03: MissingCompileTimeError
-not_enough_positional_arguments_test/06: MissingCompileTimeError
-not_enough_positional_arguments_test/07: MissingCompileTimeError
-null_test/mirrors: Skip # Uses mirrors.
-null_test/none: SkipByDesign
-object_has_no_call_method_test/02: MissingCompileTimeError
-object_has_no_call_method_test/05: MissingCompileTimeError
-object_has_no_call_method_test/08: MissingCompileTimeError
-optional_named_parameters_test/01: MissingCompileTimeError
-optional_named_parameters_test/02: MissingCompileTimeError
-optional_named_parameters_test/03: MissingCompileTimeError
-optional_named_parameters_test/04: MissingCompileTimeError
-optional_named_parameters_test/05: MissingCompileTimeError
-optional_named_parameters_test/06: MissingCompileTimeError
-optional_named_parameters_test/07: MissingCompileTimeError
-optional_named_parameters_test/08: MissingCompileTimeError
-optional_named_parameters_test/09: MissingCompileTimeError
-overridden_no_such_method_test: SkipByDesign
-override_field_test/02: MissingCompileTimeError
-override_field_test/03: MissingCompileTimeError
-override_inheritance_abstract_test/02: MissingCompileTimeError
-override_inheritance_abstract_test/03: MissingCompileTimeError
-override_inheritance_abstract_test/04: MissingCompileTimeError
-override_inheritance_abstract_test/07: MissingCompileTimeError
-override_inheritance_abstract_test/08: MissingCompileTimeError
-override_inheritance_abstract_test/09: MissingCompileTimeError
-override_inheritance_abstract_test/10: MissingCompileTimeError
-override_inheritance_abstract_test/11: MissingCompileTimeError
-override_inheritance_abstract_test/12: MissingCompileTimeError
-override_inheritance_abstract_test/13: MissingCompileTimeError
-override_inheritance_abstract_test/14: MissingCompileTimeError
-override_inheritance_abstract_test/17: MissingCompileTimeError
-override_inheritance_abstract_test/19: MissingCompileTimeError
-override_inheritance_abstract_test/20: MissingCompileTimeError
-override_inheritance_abstract_test/21: MissingCompileTimeError
-override_inheritance_abstract_test/22: MissingCompileTimeError
-override_inheritance_abstract_test/23: MissingCompileTimeError
-override_inheritance_abstract_test/24: MissingCompileTimeError
-override_inheritance_abstract_test/25: MissingCompileTimeError
-override_inheritance_abstract_test/26: MissingCompileTimeError
-override_inheritance_field_test/05: MissingCompileTimeError
-override_inheritance_field_test/07: MissingCompileTimeError
-override_inheritance_field_test/08: MissingCompileTimeError
-override_inheritance_field_test/09: MissingCompileTimeError
-override_inheritance_field_test/10: MissingCompileTimeError
-override_inheritance_field_test/11: MissingCompileTimeError
-override_inheritance_field_test/28: MissingCompileTimeError
-override_inheritance_field_test/30: MissingCompileTimeError
-override_inheritance_field_test/31: MissingCompileTimeError
-override_inheritance_field_test/32: MissingCompileTimeError
-override_inheritance_field_test/33: MissingCompileTimeError
-override_inheritance_field_test/33a: MissingCompileTimeError
-override_inheritance_field_test/34: MissingCompileTimeError
-override_inheritance_field_test/44: MissingCompileTimeError
-override_inheritance_field_test/47: MissingCompileTimeError
-override_inheritance_field_test/48: MissingCompileTimeError
-override_inheritance_field_test/53: MissingCompileTimeError
-override_inheritance_field_test/54: MissingCompileTimeError
-override_inheritance_generic_test/04: MissingCompileTimeError
-override_inheritance_generic_test/06: MissingCompileTimeError
-override_inheritance_generic_test/07: MissingCompileTimeError
-override_inheritance_generic_test/08: MissingCompileTimeError
-override_inheritance_generic_test/09: MissingCompileTimeError
-override_inheritance_generic_test/10: MissingCompileTimeError
-override_inheritance_method_test/04: MissingCompileTimeError
-override_inheritance_method_test/05: MissingCompileTimeError
-override_inheritance_method_test/06: MissingCompileTimeError
-override_inheritance_method_test/11: MissingCompileTimeError
-override_inheritance_method_test/12: MissingCompileTimeError
-override_inheritance_method_test/13: MissingCompileTimeError
-override_inheritance_method_test/14: MissingCompileTimeError
-override_inheritance_method_test/19: MissingCompileTimeError
-override_inheritance_method_test/20: MissingCompileTimeError
-override_inheritance_method_test/21: MissingCompileTimeError
-override_inheritance_method_test/27: MissingCompileTimeError
-override_inheritance_method_test/30: MissingCompileTimeError
-override_inheritance_method_test/31: MissingCompileTimeError
-override_inheritance_method_test/32: MissingCompileTimeError
-override_inheritance_method_test/33: MissingCompileTimeError
-override_inheritance_mixed_test/06: MissingCompileTimeError
-override_inheritance_mixed_test/07: MissingCompileTimeError
-override_inheritance_mixed_test/08: MissingCompileTimeError
-override_inheritance_mixed_test/09: MissingCompileTimeError
-override_inheritance_no_such_method_test/01: MissingCompileTimeError
-override_inheritance_no_such_method_test/06: MissingCompileTimeError
-override_inheritance_no_such_method_test/07: MissingCompileTimeError
-override_inheritance_no_such_method_test/09: MissingCompileTimeError
-override_inheritance_no_such_method_test/10: MissingCompileTimeError
-override_inheritance_no_such_method_test/12: MissingCompileTimeError
-override_inheritance_no_such_method_test/13: MissingCompileTimeError
-override_method_with_field_test/02: MissingCompileTimeError
-part2_test/01: MissingCompileTimeError
-positional_parameters_type_test/01: MissingCompileTimeError
-positional_parameters_type_test/02: MissingCompileTimeError
-prefix16_test/00: MissingCompileTimeError
-prefix16_test/01: MissingCompileTimeError
-prefix22_test/00: MissingCompileTimeError
-prefix23_test/00: MissingCompileTimeError
-private_access_test/01: MissingCompileTimeError
-private_access_test/02: MissingCompileTimeError
-private_access_test/03: MissingCompileTimeError
-private_access_test/04: MissingCompileTimeError
-private_access_test/05: MissingCompileTimeError
-private_access_test/06: MissingCompileTimeError
-recursive_generic_test: RuntimeError
-recursive_mixin_test: RuntimeError
-redirecting_factory_reflection_test: SkipByDesign
-regress_12561_test: MissingCompileTimeError
-regress_13462_0_test: SkipByDesign
-regress_13462_1_test: SkipByDesign
-regress_13494_test: MissingCompileTimeError
-regress_17382_test: MissingCompileTimeError
-regress_18535_test: SkipByDesign
-regress_19413_test: MissingCompileTimeError
-regress_19728_test: MissingCompileTimeError
-regress_21793_test/01: MissingCompileTimeError
-regress_21912_test/01: MissingCompileTimeError
-regress_21912_test/02: MissingCompileTimeError
-regress_22438_test: MissingCompileTimeError
-regress_22936_test: MissingCompileTimeError
-regress_23089_test: MissingCompileTimeError
-regress_23408_test: RuntimeError
-regress_26133_test: MissingCompileTimeError
-regress_27572_test: MissingCompileTimeError
-regress_28255_test: SkipByDesign
-regress_28341_test: RuntimeError
-regress_31591_test: RuntimeError, OK # strong mode only
-return_type_test: MissingCompileTimeError
-rewrite_implicit_this_test/01: MissingCompileTimeError
-runtime_type_function_test: RuntimeError
-setter4_test: MissingCompileTimeError
-setter_override_test/01: MissingCompileTimeError
-setter_override_test/02: MissingCompileTimeError
-stacktrace_demangle_ctors_test: RuntimeError
-static_field1_test/01: MissingCompileTimeError
-static_field1a_test/01: MissingCompileTimeError
-static_field3_test/01: MissingCompileTimeError
-static_field3_test/02: MissingCompileTimeError
-static_field3_test/03: MissingCompileTimeError
-static_field3_test/04: MissingCompileTimeError
-static_field_test/01: MissingCompileTimeError
-static_field_test/02: MissingCompileTimeError
-static_field_test/03: MissingCompileTimeError
-static_field_test/04: MissingCompileTimeError
-static_final_field2_test/01: MissingCompileTimeError
-static_getter_no_setter1_test/01: MissingCompileTimeError
-static_getter_no_setter2_test/01: MissingCompileTimeError
-static_initializer_type_error_test: MissingCompileTimeError
-static_setter_get_test/01: MissingCompileTimeError
-string_interpolation_test/01: MissingCompileTimeError
-string_no_operator_test/01: MissingCompileTimeError
-string_no_operator_test/02: MissingCompileTimeError
-string_no_operator_test/03: MissingCompileTimeError
-string_no_operator_test/04: MissingCompileTimeError
-string_no_operator_test/05: MissingCompileTimeError
-string_no_operator_test/06: MissingCompileTimeError
-string_no_operator_test/07: MissingCompileTimeError
-string_no_operator_test/08: MissingCompileTimeError
-string_no_operator_test/09: MissingCompileTimeError
-string_no_operator_test/10: MissingCompileTimeError
-string_no_operator_test/11: MissingCompileTimeError
-string_no_operator_test/12: MissingCompileTimeError
-string_no_operator_test/13: MissingCompileTimeError
-string_no_operator_test/14: MissingCompileTimeError
-string_no_operator_test/15: MissingCompileTimeError
-string_no_operator_test/16: MissingCompileTimeError
-string_test/01: MissingCompileTimeError
-substring_test/01: MissingCompileTimeError
-super_assign_test/01: MissingCompileTimeError
-super_bound_closure_test/01: MissingCompileTimeError
-super_operator_index_test/01: MissingCompileTimeError
-super_operator_index_test/02: MissingCompileTimeError
-super_operator_index_test/03: MissingCompileTimeError
-super_operator_index_test/04: MissingCompileTimeError
-super_operator_index_test/05: MissingCompileTimeError
-super_operator_index_test/06: MissingCompileTimeError
-super_operator_index_test/07: MissingCompileTimeError
-super_test: Fail, OK
-switch_fallthru_test/01: MissingCompileTimeError
-symbol_literal_test/01: MissingCompileTimeError
-sync_generator1_test/01: MissingCompileTimeError
-syntax_test/59: MissingCompileTimeError, OK # Issue 30516.
-syntax_test/60: MissingCompileTimeError, OK # Issue 30516.
-syntax_test/61: MissingCompileTimeError, OK # Issue 30516.
-top_level_getter_no_setter1_test: MissingCompileTimeError
-top_level_getter_no_setter2_test: MissingCompileTimeError
-transitive_private_library_access_test: MissingCompileTimeError
-try_catch_on_syntax_test/07: MissingCompileTimeError
-try_catch_on_syntax_test/10: MissingCompileTimeError
-try_catch_on_syntax_test/11: MissingCompileTimeError
-try_catch_syntax_test/08: MissingCompileTimeError
-type_checks_in_factory_method_test/01: MissingCompileTimeError
-type_inference_accessor_ref_test/03: MissingCompileTimeError
-type_inference_accessor_ref_test/06: MissingCompileTimeError
-type_inference_circularity_test: MissingCompileTimeError
-type_inference_inconsistent_inheritance_test: MissingCompileTimeError
-type_parameter_test/05: MissingCompileTimeError
-type_promotion_functions_test/01: MissingCompileTimeError
-type_promotion_functions_test/05: MissingCompileTimeError
-type_promotion_functions_test/06: MissingCompileTimeError
-type_promotion_functions_test/07: MissingCompileTimeError
-type_promotion_functions_test/08: MissingCompileTimeError
-type_promotion_functions_test/10: MissingCompileTimeError
-type_promotion_parameter_test/01: MissingCompileTimeError
-type_promotion_parameter_test/02: MissingCompileTimeError
-type_promotion_parameter_test/03: MissingCompileTimeError
-type_promotion_parameter_test/04: MissingCompileTimeError
-type_promotion_parameter_test/05: MissingCompileTimeError
-type_promotion_parameter_test/06: MissingCompileTimeError
-type_promotion_parameter_test/07: MissingCompileTimeError
-type_promotion_parameter_test/08: MissingCompileTimeError
-type_promotion_parameter_test/09: MissingCompileTimeError
-type_promotion_parameter_test/10: MissingCompileTimeError
-type_promotion_parameter_test/11: MissingCompileTimeError
-type_promotion_parameter_test/12: MissingCompileTimeError
-type_promotion_parameter_test/13: MissingCompileTimeError
-type_promotion_parameter_test/14: MissingCompileTimeError
-type_promotion_parameter_test/15: MissingCompileTimeError
-type_promotion_parameter_test/16: MissingCompileTimeError
-type_promotion_parameter_test/17: MissingCompileTimeError
-type_promotion_parameter_test/18: MissingCompileTimeError
-type_promotion_parameter_test/19: MissingCompileTimeError
-type_promotion_parameter_test/20: MissingCompileTimeError
-type_promotion_parameter_test/21: MissingCompileTimeError
-type_promotion_parameter_test/22: MissingCompileTimeError
-type_promotion_parameter_test/23: MissingCompileTimeError
-type_promotion_parameter_test/24: MissingCompileTimeError
-type_promotion_parameter_test/25: MissingCompileTimeError
-type_promotion_parameter_test/26: MissingCompileTimeError
-type_promotion_parameter_test/27: MissingCompileTimeError
-type_promotion_parameter_test/28: MissingCompileTimeError
-type_promotion_parameter_test/29: MissingCompileTimeError
-type_promotion_parameter_test/30: MissingCompileTimeError
-type_promotion_parameter_test/31: MissingCompileTimeError
-type_promotion_parameter_test/32: MissingCompileTimeError
-type_promotion_parameter_test/33: MissingCompileTimeError
-type_promotion_parameter_test/34: MissingCompileTimeError
-type_promotion_parameter_test/35: MissingCompileTimeError
-type_promotion_parameter_test/36: MissingCompileTimeError
-type_promotion_parameter_test/37: MissingCompileTimeError
-type_promotion_parameter_test/38: MissingCompileTimeError
-type_promotion_parameter_test/39: MissingCompileTimeError
-type_promotion_parameter_test/40: MissingCompileTimeError
-type_promotion_parameter_test/41: MissingCompileTimeError
-type_promotion_parameter_test/42: MissingCompileTimeError
-type_promotion_parameter_test/43: MissingCompileTimeError
-type_promotion_parameter_test/44: MissingCompileTimeError
-type_promotion_parameter_test/45: MissingCompileTimeError
-type_promotion_parameter_test/46: MissingCompileTimeError
-type_promotion_parameter_test/47: MissingCompileTimeError
-type_promotion_parameter_test/48: MissingCompileTimeError
-type_promotion_parameter_test/49: MissingCompileTimeError
-type_promotion_parameter_test/50: MissingCompileTimeError
-type_promotion_parameter_test/51: MissingCompileTimeError
-type_promotion_parameter_test/52: MissingCompileTimeError
-type_promotion_parameter_test/54: MissingCompileTimeError
-type_promotion_parameter_test/55: MissingCompileTimeError
-type_promotion_parameter_test/56: MissingCompileTimeError
-type_variable_bounds2_test: MissingCompileTimeError
-type_variable_bounds3_test/00: MissingCompileTimeError
-type_variable_bounds4_test/01: MissingCompileTimeError
-type_variable_bounds_test/00: MissingCompileTimeError
-type_variable_bounds_test/01: MissingCompileTimeError
-type_variable_bounds_test/02: MissingCompileTimeError
-type_variable_bounds_test/03: MissingCompileTimeError
-type_variable_bounds_test/04: MissingCompileTimeError
-type_variable_bounds_test/05: MissingCompileTimeError
-type_variable_bounds_test/06: MissingCompileTimeError
-type_variable_bounds_test/07: MissingCompileTimeError
-type_variable_bounds_test/08: MissingCompileTimeError
-type_variable_bounds_test/09: MissingCompileTimeError
-type_variable_bounds_test/10: MissingCompileTimeError
-type_variable_bounds_test/11: MissingCompileTimeError
-type_variable_conflict2_test/01: MissingCompileTimeError
-type_variable_conflict2_test/03: MissingCompileTimeError
-type_variable_conflict2_test/04: MissingCompileTimeError
-type_variable_conflict2_test/05: MissingCompileTimeError
-type_variable_conflict2_test/07: MissingCompileTimeError
-type_variable_conflict2_test/09: MissingCompileTimeError
-type_variable_identifier_expression_test: MissingCompileTimeError
-type_variable_nested_test/01: RuntimeError
-type_variable_promotion_test: RuntimeError
-type_variable_scope2_test: MissingCompileTimeError
-type_variable_scope_test/00: MissingCompileTimeError
-type_variable_scope_test/01: MissingCompileTimeError
-type_variable_scope_test/02: MissingCompileTimeError
-type_variable_scope_test/03: MissingCompileTimeError
-type_variable_scope_test/04: MissingCompileTimeError
-type_variable_scope_test/05: MissingCompileTimeError
-type_variable_static_context_test: MissingCompileTimeError
-typed_selector2_test: MissingCompileTimeError
-typevariable_substitution2_test/02: RuntimeError
-unbound_getter_test: MissingCompileTimeError
-unicode_bom_test: Fail # Issue 16067
-unresolved_default_constructor_test/01: MissingCompileTimeError
-unresolved_in_factory_test: MissingCompileTimeError
-unresolved_top_level_method_test: MissingCompileTimeError
-unresolved_top_level_var_test: MissingCompileTimeError
-vm/causal_async_exception_stack2_test: SkipByDesign
-vm/causal_async_exception_stack_test: SkipByDesign
-vm/debug_break_enabled_vm_test/01: Crash, OK # Expected to hit breakpoint.
-vm/optimized_stacktrace_test: Skip # Issue 30198
-vm/reflect_core_vm_test: SkipByDesign
-vm/regress_27201_test: Fail
-vm/regress_27671_test: Skip # Unsupported
-vm/regress_29145_test: Skip # Issue 29145
-vm/type_cast_vm_test: RuntimeError # Expects line and column numbers
-vm/type_vm_test: RuntimeError, Pass # Expects line and column numbers
-vm/type_vm_test: RuntimeError # Expects line and column numbers
-void/void_block_return_test/00: MissingCompileTimeError
-wrong_number_type_arguments_test/*: MissingCompileTimeError
-
-[ $compiler == precompiler && $runtime == dart_precompiled && $checked ]
-covariance_type_parameter_test/01: RuntimeError
-covariance_type_parameter_test/02: RuntimeError
-covariance_type_parameter_test/03: RuntimeError
-covariance_type_parameter_test/none: RuntimeError
-dynamic_test: RuntimeError
-function_subtype_checked0_test: Pass
-function_subtype_closure0_test: Pass
-function_subtype_closure1_test: Pass
-function_subtype_factory1_test: Pass
-function_subtype_inline1_test: Pass
-function_subtype_inline2_test: Pass
-function_subtype_regression_ddc_588_test: Pass
-function_subtype_setter0_test: Pass
-generic_functions_test: Pass # Issue 25869
-generic_local_functions_test: Pass # Issue 25869
-generic_methods_function_type_test: Pass # Issue 25869
-generic_methods_generic_function_parameter_test: Pass # Issue 25869
-generic_methods_new_test: Pass # Issue 25869
-generic_methods_test: Pass # Issue 25869
-nsm5_test: MissingCompileTimeError
-override_inheritance_no_such_method_test/05: MissingCompileTimeError
-
-[ $compiler == precompiler && $runtime == dart_precompiled && !$checked ]
-assertion_initializer_const_error_test/01: MissingCompileTimeError
-assertion_initializer_const_function_error_test/01: MissingCompileTimeError
-callable_test/none: RuntimeError
-cascaded_forwarding_stubs_generic_test: RuntimeError
-cascaded_forwarding_stubs_test: RuntimeError
-checked_setter2_test: RuntimeError
-checked_setter3_test: RuntimeError
-checked_setter_test: RuntimeError
-const_constructor2_test/13: MissingCompileTimeError
-const_constructor2_test/14: MissingCompileTimeError
-const_constructor2_test/15: MissingCompileTimeError
-const_constructor2_test/16: MissingCompileTimeError
-const_constructor2_test/17: MissingCompileTimeError
-const_constructor2_test/18: MissingCompileTimeError
-const_constructor2_test/20: MissingCompileTimeError
-const_constructor2_test/22: MissingCompileTimeError
-const_constructor2_test/24: MissingCompileTimeError
-covariance_field_test/01: RuntimeError
-covariance_field_test/02: RuntimeError
-covariance_field_test/03: RuntimeError
-covariance_field_test/04: RuntimeError
-covariance_field_test/05: RuntimeError
-covariance_method_test/01: RuntimeError
-covariance_method_test/02: RuntimeError
-covariance_method_test/03: RuntimeError
-covariance_method_test/04: RuntimeError
-covariance_method_test/05: RuntimeError
-covariance_method_test/06: RuntimeError
-covariance_setter_test/01: RuntimeError
-covariance_setter_test/02: RuntimeError
-covariance_setter_test/03: RuntimeError
-covariance_setter_test/04: RuntimeError
-covariance_setter_test/05: RuntimeError
-covariance_setter_test/06: RuntimeError
-covariance_type_parameter_test/01: RuntimeError
-covariance_type_parameter_test/02: RuntimeError
-covariance_type_parameter_test/03: RuntimeError
-forwarding_semi_stub_test: RuntimeError
-forwarding_stub_tearoff_generic_test: RuntimeError
-forwarding_stub_tearoff_test: RuntimeError
-function_type_call_getter2_test/none: RuntimeError
-function_type_test: RuntimeError
-generic_field_mixin6_test/none: RuntimeError
-generic_methods_dynamic_test/02: MissingRuntimeError
-generic_methods_dynamic_test/04: MissingRuntimeError
-implicit_downcast_during_assignment_test: RuntimeError
-implicit_downcast_during_combiner_test: RuntimeError
-implicit_downcast_during_compound_assignment_test: RuntimeError
-implicit_downcast_during_conditional_expression_test: RuntimeError
-implicit_downcast_during_constructor_initializer_test: RuntimeError
-implicit_downcast_during_constructor_invocation_test: RuntimeError
-implicit_downcast_during_do_test: RuntimeError
-implicit_downcast_during_factory_constructor_invocation_test: RuntimeError
-implicit_downcast_during_field_declaration_test: RuntimeError
-implicit_downcast_during_for_condition_test: RuntimeError
-implicit_downcast_during_for_in_element_test: RuntimeError
-implicit_downcast_during_for_initializer_expression_test: RuntimeError
-implicit_downcast_during_for_initializer_var_test: RuntimeError
-implicit_downcast_during_if_null_assignment_test: RuntimeError
-implicit_downcast_during_if_statement_test: RuntimeError
-implicit_downcast_during_indexed_assignment_test: RuntimeError
-implicit_downcast_during_indexed_compound_assignment_test: RuntimeError
-implicit_downcast_during_indexed_get_test: RuntimeError
-implicit_downcast_during_indexed_if_null_assignment_test: RuntimeError
-implicit_downcast_during_invocation_test: RuntimeError
-implicit_downcast_during_list_literal_test: RuntimeError
-implicit_downcast_during_logical_expression_test: RuntimeError
-implicit_downcast_during_map_literal_test: RuntimeError
-implicit_downcast_during_method_invocation_test: RuntimeError
-implicit_downcast_during_not_test: RuntimeError
-implicit_downcast_during_null_aware_method_invocation_test: RuntimeError
-implicit_downcast_during_redirecting_initializer_test: RuntimeError
-implicit_downcast_during_return_async_test: RuntimeError
-implicit_downcast_during_return_test: RuntimeError
-implicit_downcast_during_static_method_invocation_test: RuntimeError
-implicit_downcast_during_super_initializer_test: RuntimeError
-implicit_downcast_during_super_method_invocation_test: RuntimeError
-implicit_downcast_during_variable_declaration_test: RuntimeError
-implicit_downcast_during_while_statement_test: RuntimeError
-issue31596_implement_covariant_test: RuntimeError
-issue31596_test: RuntimeError
-type_argument_in_super_type_test: RuntimeError
-type_check_const_function_typedef2_test: MissingCompileTimeError
-
 [ $runtime == dart_precompiled && $minified ]
 cyclic_type_test/*: Skip
 enum_duplicate_test/*: Skip # Uses Enum.toString()
diff --git a/tests/language_2/this_in_initializer_test.dart b/tests/language_2/this_in_initializer_test.dart
new file mode 100644
index 0000000..bf65c17
--- /dev/null
+++ b/tests/language_2/this_in_initializer_test.dart
@@ -0,0 +1,64 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A {
+  static var s = "something";
+  var a = "anything";
+  var x;
+
+  foo() => null;
+  bar(var y) => y;
+  static sfoo() => null;
+  static sbar(var y) => y;
+
+  A.next();
+
+  A(); //# 00: ok
+  A() : this.next(); //# 01: ok
+
+  A() : x = s; //# 02: ok
+  A() : x = sfoo(); //# 03: ok
+  A() : x = sbar(null); //# 04: ok
+  A() : x = a; //# 05: compile-time error
+  A() : x = foo(); //# 06: compile-time error
+  A() : x = bar(null); //# 07: compile-time error
+  A() : x = bar(this); //# 08: compile-time error
+  A() : x = this; //# 09: compile-time error
+  A() : x = this.a; //# 10: compile-time error
+  A() : x = this.foo(); //# 11: compile-time error
+  A() : x = this.bar(null); //# 12: compile-time error
+  A() : x = this.bar(this); //# 13: compile-time error
+  A() : x = sbar(this); //# 14: compile-time error
+  A() : x = sbar(this.a); //# 15: compile-time error
+  A() : x = sbar(this.foo()); //# 16: compile-time error
+  A() : x = sbar(this.bar(null)); //# 17: compile-time error
+  A() : x = sbar(this.bar(this)); //# 18: compile-time error
+
+  A() : this.x = (() => null); //# 19: ok
+  A() : this.x = (() => s)(); //# 20: ok
+  A() : this.x = ((c) => c); //# 21: ok
+  A() : this.x = ((c) => s)(null); //# 22: ok
+  A() : this.x = ((c) => c)(this); //# 23: compile-time error
+  A() : this.x = (() => this); //# 24: compile-time error
+  A() : this.x = (() => this.a)(); //# 25: compile-time error
+  A() : this.x = ((c) => this.foo()); //# 26: compile-time error
+  A() : this.x = ((c) => a)(null); //# 27: compile-time error
+  A() : this.x = ((c) => foo())(s); //# 28: compile-time error
+  A() : this.x = sbar((() { return null; })); //# 29: ok
+  A() : this.x = sbar((() { return s; })()); //# 30: ok
+  A() : this.x = sbar(((c) { return c; })); //# 31: ok
+  A() : this.x = sbar(((c) { return s; })(null)); //# 32: ok
+  A() : this.x = sbar(((c) { return c; })(this)); //# 33: compile-time error
+  A() : this.x = sbar((() { return this; })); //# 34: compile-time error
+  A() : this.x = sbar((() { return this.a; })()); //# 35: compile-time error
+  A() : this.x = sbar(((c) { return this.foo(); })); //# 36: compile-time error
+  A() : this.x = sbar(((c) { return a; })(null)); //# 37: compile-time error
+  A() : this.x = sbar(((c) { return foo(); })(s)); //# 38: compile-time error
+
+  A() : this.x = (s = null); //# 39: ok
+  A() : this.x = (a = null); //# 40: compile-time error
+  A() : this.x = (this.a = null); //# 41: compile-time error
+}
+
+main() {}
diff --git a/tests/language_2/type_variable_promotion_test.dart b/tests/language_2/type_variable_promotion_test.dart
index 42e8454..c0a507c 100644
--- a/tests/language_2/type_variable_promotion_test.dart
+++ b/tests/language_2/type_variable_promotion_test.dart
@@ -30,6 +30,11 @@
 main() {
   var foo = new Foo<B>();
   var b = new B();
-  Expect.equals('List<B>', foo.foo(b));
+
+  // List class has many different platform specific implementations
+  // so we can't rely on the fact that all of them have the same
+  // user visible name. Instead we build a name for List<B> from List<A>.
+  final expected = (<A>[]).runtimeType.toString().replaceAll('<$A>', '<$B>');
+  Expect.equals(expected, foo.foo(b));
   Expect.listEquals([b], foo.bar(b));
 }
diff --git a/tests/language_2/vm/modtruncdiv_int_test.dart b/tests/language_2/vm/modtruncdiv_int_test.dart
index 7b42697..7a84d1a 100644
--- a/tests/language_2/vm/modtruncdiv_int_test.dart
+++ b/tests/language_2/vm/modtruncdiv_int_test.dart
@@ -177,6 +177,34 @@
     Expect.equals(38654705666, acc);
 
     acc = 0;
+    doModVars(minInt32 - 4, minInt32 + 4, -11, -1);
+    Expect.equals(239, acc);
+
+    acc = 0;
+    doModVars(minInt32 - 4, minInt32 + 4, 2, 7);
+    Expect.equals(85, acc);
+
+    acc = 0;
+    doModVars(minInt32 - 4, minInt32 + 4, minInt32 - 4, minInt32 + 4);
+    Expect.equals(77309411268, acc);
+
+    acc = 0;
+    doModVars(minInt32 - 4, minInt32 + 4, maxInt32 - 4, maxInt32 + 4);
+    Expect.equals(96636763974, acc);
+
+    acc = 0;
+    doModVars(maxInt32 - 4, maxInt32 + 4, 2, 7);
+    Expect.equals(104, acc);
+
+    acc = 0;
+    doModVars(maxInt32 - 4, maxInt32 + 4, minInt32 - 4, minInt32 + 4);
+    Expect.equals(96636764139, acc);
+
+    acc = 0;
+    doModVars(maxInt32 - 4, maxInt32 + 4, maxInt32 - 4, maxInt32 + 4);
+    Expect.equals(77309411352, acc);
+
+    acc = 0;
     doTruncDivVars(3, 5, 2, 6);
     Expect.equals(11, acc);
 
@@ -200,6 +228,38 @@
     doTruncDivVars(minInt64, minInt64, -1, -1);
     Expect.equals(minInt64, acc);
 
+    acc = 0;
+    doTruncDivVars(minInt32 - 4, minInt32 + 4, -11, -1);
+    Expect.equals(58366234918, acc);
+
+    acc = 0;
+    doTruncDivVars(minInt32 - 4, minInt32 + 4, 2, 7);
+    Expect.equals(-30785711991, acc);
+
+    acc = 0;
+    doTruncDivVars(minInt32 - 4, minInt32 + 4, minInt32 - 4, minInt32 + 4);
+    Expect.equals(45, acc);
+
+    acc = 0;
+    doTruncDivVars(minInt32 - 4, minInt32 + 4, maxInt32 - 4, maxInt32 + 4);
+    Expect.equals(-53, acc);
+
+    acc = 0;
+    doTruncDivVars(maxInt32 - 4, maxInt32 + 4, 2, 7);
+    Expect.equals(30785711975, acc);
+
+    acc = 0;
+    doTruncDivVars(maxInt32 - 4, maxInt32 + 4, minInt32 - 4, minInt32 + 4);
+    Expect.equals(-36, acc);
+
+    acc = 0;
+    doTruncDivVars(maxInt32 - 4, maxInt32 + 4, maxInt32 - 4, maxInt32 + 4);
+    Expect.equals(45, acc);
+
+    acc = 0;
+    doTruncDivVars(maxInt32 - 4, maxInt32 + 4, 1, 7);
+    Expect.equals(50113064798, acc);
+
     // Exceptions at the right time.
 
     acc = 0;
diff --git a/tests/language_2/vm/negate_int_test.dart b/tests/language_2/vm/negate_int_test.dart
new file mode 100644
index 0000000..8703aef
--- /dev/null
+++ b/tests/language_2/vm/negate_int_test.dart
@@ -0,0 +1,46 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// VMOptions=--no_background_compilation --optimization_counter_threshold=10
+
+import "package:expect/expect.dart";
+
+// Tests for long negations under
+// 64-bit arithmetic wrap-around semantics.
+
+final int maxInt32 = 2147483647;
+final int minInt32 = -2147483648;
+final int maxInt64 = 0x7fffffffffffffff;
+final int minInt64 = 0x8000000000000000;
+
+int negate(int x) {
+  return -x;
+}
+
+doConstant() {
+  Expect.equals(1, negate(-1));
+  Expect.equals(0, negate(0));
+  Expect.equals(-1, negate(1));
+
+  Expect.equals(-maxInt32, negate(maxInt32));
+  Expect.equals(-minInt32, negate(minInt32));
+  Expect.equals(-maxInt64, negate(maxInt64));
+  Expect.equals(minInt64, negate(minInt64)); // sic!
+}
+
+doVar() {
+  int d = 0;
+  for (int i = -88; i < 10; i++) {
+    d += negate(i);
+  }
+  Expect.equals(3871, d);
+}
+
+main() {
+  // Repeat tests to enter JIT (when applicable).
+  for (int i = 0; i < 20; i++) {
+    doConstant();
+    doVar();
+  }
+}
diff --git a/tests/language_2/void/void_type_usage_test.dart b/tests/language_2/void/void_type_usage_test.dart
index bdfeca3..a49a34a 100644
--- a/tests/language_2/void/void_type_usage_test.dart
+++ b/tests/language_2/void/void_type_usage_test.dart
@@ -125,7 +125,7 @@
   f() ??= 3; //# call_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= f(); //# call_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[f()]; //# call_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[f()]; //# call_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[f()]; //# call_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidCallDynamic(void f()) {
@@ -179,7 +179,7 @@
   x ??= 3; //# local_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= x; //# local_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[x]; //# local_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[x]; //# local_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[x]; //# local_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidLocalDynamic() {
@@ -234,7 +234,7 @@
   x ??= 3; //# final_local_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= x; //# final_local_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[x]; //# final_local_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[x]; //# final_local_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[x]; //# final_local_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidFinalLocalDynamic() {
@@ -288,7 +288,7 @@
   global ??= 3; //# global_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= global; //# global_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[global]; //# global_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[global]; //# global_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[global]; //# global_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidGlobalDynamic() {
@@ -540,7 +540,7 @@
   (x) ??= 3; //# paren_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= (x); //# paren_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[(x)]; //# paren_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[(x)]; //# paren_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[(x)]; //# paren_use_in_map_lookup: compile-time error
 }
 
 dynamic testParenthesizedDynamic() {
diff --git a/tests/lib_2/lib_2_analyzer.status b/tests/lib_2/lib_2_analyzer.status
index 60034b9..fb40aa7 100644
--- a/tests/lib_2/lib_2_analyzer.status
+++ b/tests/lib_2/lib_2_analyzer.status
@@ -17,9 +17,6 @@
 mirrors/redirecting_factory_test/none: StaticWarning # test issue X, The return type 'Class<T2, T1>' of the redirected constructor is not assignable to 'Class<T1, T2>
 mirrors/repeated_private_anon_mixin_app_test: StaticWarning, OK # Intentional library name conflict.
 
-[ $compiler == dart2analyzer && !$preview_dart_2 ]
-mirrors/metadata_nested_constructor_call_test/none: CompileTimeError
-
 [ $compiler == dart2analyzer && $strong ]
 mirrors/deferred_mirrors_metadata_test: StaticWarning # Issue 28969
 mirrors/deferred_type_test: CompileTimeError, OK # Deliberately refers to a deferred type in a declaration.
diff --git a/tests/lib_2/lib_2_dartdevc.status b/tests/lib_2/lib_2_dartdevc.status
index 2722828..8ad1f08 100644
--- a/tests/lib_2/lib_2_dartdevc.status
+++ b/tests/lib_2/lib_2_dartdevc.status
@@ -82,7 +82,7 @@
 html/js_util_test: RuntimeError # Issue 29922
 html/media_stream_test: RuntimeError # Issue 29922
 html/no_linked_scripts_htmltest: Skip # Issue 29919
-html/notification_permission_test: Timeout # Issue 32002
+html/notification_permission_test: Skip # Issue 32002
 html/scripts_htmltest: Skip # Issue 29919
 html/transition_event_test: Pass, RuntimeError, Timeout # Issue 29922, this test seems flaky
 html/two_scripts_htmltest: Skip # Issue 29919
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 872168d7..44bc1dd 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -28,7 +28,6 @@
 js/*: Skip # TODO(ahe): Make dart:js available.
 
 [ $fasta ]
-isolate/compile_time_error_test/01: MissingCompileTimeError
 mirrors/deferred_constraints_constants_test/default_argument2: MissingCompileTimeError
 mirrors/generic_bounded_by_type_parameter_test/02: MissingCompileTimeError
 mirrors/generic_bounded_test/01: MissingCompileTimeError
@@ -80,7 +79,6 @@
 async/stream_distinct_test: RuntimeError
 async/timer_not_available_test: RuntimeError
 html/*: SkipByDesign # dart:html not supported on VM.
-isolate/compile_time_error_test/01: Crash
 isolate/deferred_in_isolate2_test: Skip # Times out. Deferred loading kernel issue 28335.
 isolate/deferred_in_isolate_test: Skip # Times out. Deferred loading kernel issue 28335.
 isolate/issue_21398_parent_isolate2_test/01: Skip # Times out. Deferred loading kernel issue 28335.
diff --git a/tests/standalone_2/io/http_cookie_test.dart b/tests/standalone_2/io/http_cookie_test.dart
index 27ae218..50cad66 100644
--- a/tests/standalone_2/io/http_cookie_test.dart
+++ b/tests/standalone_2/io/http_cookie_test.dart
@@ -58,6 +58,16 @@
   });
 }
 
+void testValidateCookieWithDoubleQuotes() {
+  try {
+    Cookie cookie = Cookie('key', '"double-quoted-value"');
+  } catch (e) {
+    Expect.fail("Unexpected error $e.\n"
+        "Unable to parse cookie with value in double-quote characters.");
+  }
+}
+
 void main() {
   testCookies();
+  testValidateCookieWithDoubleQuotes();
 }
diff --git a/tests/standalone_2/io/test_extension_fail_test.dart b/tests/standalone_2/io/test_extension_fail_test.dart
index 262d1db..dae4411 100644
--- a/tests/standalone_2/io/test_extension_fail_test.dart
+++ b/tests/standalone_2/io/test_extension_fail_test.dart
@@ -36,7 +36,7 @@
 }
 
 bool checkExitCode(int code) {
-  return ((code == 255) || (code == 253));
+  return ((code == 255) || (code == 254) || (code == 253));
 }
 
 bool checkStdError(String err) {
diff --git a/tests/standalone_2/standalone_2_kernel.status b/tests/standalone_2/standalone_2_kernel.status
index d43db41..45e463b 100644
--- a/tests/standalone_2/standalone_2_kernel.status
+++ b/tests/standalone_2/standalone_2_kernel.status
@@ -68,6 +68,9 @@
 io/socket_info_ipv6_test: Pass, Crash
 io/socket_port_test: Pass, Crash
 
+[ $compiler == dartkp && $mode == product && $runtime == dart_precompiled && $strong ]
+io/compile_all_test: Pass
+
 # ===== dartkp + dart_precompiled status lines =====
 [ $compiler == dartkp && $runtime == dart_precompiled && $system != windows && $strong ]
 io/namespace_test: RuntimeError
diff --git a/tests/standalone_2/standalone_2_precompiled.status b/tests/standalone_2/standalone_2_precompiled.status
index 4d15ac5..942a80a 100644
--- a/tests/standalone_2/standalone_2_precompiled.status
+++ b/tests/standalone_2/standalone_2_precompiled.status
@@ -49,6 +49,7 @@
 io/windows_environment_test: Skip
 
 [ $arch == arm && $mode == release && $runtime == dart_precompiled && $system == android ]
+io/socket_cancel_connect_test: RuntimeError # Issue 34142
 io/stdout_stderr_non_blocking_test: Pass, Timeout # Issue 28426
 
 [ $mode == product && $runtime == dart_precompiled ]
diff --git a/tools/3xhead_flutter_hooks.sh b/tools/3xhead_flutter_hooks.sh
old mode 100644
new mode 100755
diff --git a/tools/VERSION b/tools/VERSION
index 168796f..5f0eacc 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 1
 PATCH 0
-PRERELEASE 0
+PRERELEASE 1
 PRERELEASE_PATCH 0
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index af49e3c..3f8d93e 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -94,6 +94,7 @@
       "out/DebugSIMARM64/",
       "out/DebugSIMDBC64/",
       "out/DebugX64/",
+      "out/ProductX64/",
       "out/ReleaseIA32/",
       "out/ReleaseSIMARM/",
       "out/ReleaseSIMARM64/",
@@ -102,6 +103,7 @@
       "xcodebuild/DebugIA32/",
       "xcodebuild/DebugX64/",
       "xcodebuild/ReleaseIA32/",
+      "xcodebuild/ReleaseSIMARM64/",
       "xcodebuild/ReleaseX64/",
       "samples/",
       "samples-dev/",
@@ -145,70 +147,86 @@
   "configurations": {
     "unittest-(linux|win|mac)": {
       "options": {
-        "compiler": "none",
-        "runtime": "vm",
+        "compiler": "dartk",
         "mode": "release",
-        "preview-dart-2": false,
-        "use-sdk": true,
-        "checked": true,
-        "timeout": 240
+        "runtime": "vm",
+        "timeout": 240,
+        "use-sdk": true
       }},
     "unittest-asserts-(linux|mac|win)": {
       "options": {
-        "compiler": "none",
-        "runtime": "vm",
+        "compiler": "dartk",
+        "enable-asserts": true,
         "mode": "release",
-        "use-sdk": true,
-        "enable-asserts": true
+        "runtime": "vm",
+        "timeout": 240,
+        "use-sdk": true
       }},
+      "unittest-asserts-no-sdk-(linux|mac|win)": {
+        "options": {
+          "compiler": "dartk",
+          "enable-asserts": true,
+          "mode": "release",
+          "runtime": "vm",
+          "timeout": 240
+        }},
     "unittest-analyzer_use_fasta-linux": {
       "options": {
         "compiler": "none",
         "runtime": "vm",
         "mode": "release",
         "use-sdk": true,
-        "vm-options": ["-DuserFastParser=true"],
+        "vm-options": ["-DuseFastaParser=true"],
         "builder-tag": "analyzer_use_fasta"
       }},
     "vm-legacy-(linux|mac|win)-(debug|release)-(ia32|x64)": {
       "options": {
-        "preview-dart-2": false
+        "preview-dart-2": false,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-checked-(linux|mac|win)-(debug|release)-(ia32|x64)": {
       "options": {
         "preview-dart-2": false,
-        "checked": true
+        "checked": true,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-linux-debug-simarm": {
       "options": {
-        "preview-dart-2": false
+        "preview-dart-2": false,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-checked-linux-debug-simarm": {
       "options": {
         "preview-dart-2": false,
-        "checked": true
+        "checked": true,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-linux-release-(simarm|simarm64)": {
       "options": {
-        "preview-dart-2": false
+        "preview-dart-2": false,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-checked-linux-release-(simarm|simarm64)": {
       "options": {
         "preview-dart-2": false,
-        "checked": true
+        "checked": true,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-mac-(debug|release)-simdbc64": {
       "options": {
-        "preview-dart-2": false
+        "preview-dart-2": false,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-checked-mac-(debug|release)-simdbc64": {
       "options": {
         "preview-dart-2": false,
-        "checked": true
+        "checked": true,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-(linux|mac|win)-product-x64": {
       "options": {
-        "preview-dart-2": false
+        "preview-dart-2": false,
+        "builder-tag": "swarming"
       }},
     "vm-legacy-asan-linux-release-x64": {
       "options": {
@@ -337,14 +355,18 @@
       "options": {
         "use-blobs": true
     }},
+    "dartkp-(win|mac)-release-simarm64": {
+      "options": {
+        "use-blobs": true
+    }},
     "dartkp-win-release-x64": {
       "options": {
         "use-blobs": true
     }},
-    "dartkp-linux-release-x64": { },
+    "dartkp-linux-(product|release)-x64": { },
     "dartkp-linux-debug-x64": {
       "options": {
-        "vm-options": ["no-enable-malloc-hooks"]
+        "vm-options": ["--no-enable-malloc-hooks"]
     }},
     "dartk-(linux|mac)-(debug|release)-x64": { },
     "dartk-win-release-x64": { },
@@ -353,8 +375,7 @@
     "dartk-optcounter-linux-release-x64": {
       "options": {
         "builder-tag": "optimization_counter_threshold",
-        "vm-options": ["--optimization-counter-threshold=5"],
-        "preview-dart-2": false
+        "vm-options": ["--optimization-counter-threshold=5"]
       }},
     "dartk-legacy-linux-release-x64": {
       "options": {
@@ -399,10 +420,6 @@
         "use-blobs": true
       }},
     "fasta-(linux|mac|win)": { },
-    "fasta-legacy-linux": {
-      "options": {
-        "preview-dart-2": false
-      }},
     "analyzer-(linux|mac|win)": {
       "options": {
         "compiler": "dart2analyzer",
@@ -418,35 +435,6 @@
   "builder_configurations": [
     {
       "builders": [
-        "front-end-legacy-linux-release-x64"
-      ],
-      "meta": {
-        "description": "Runs the fasta legacy mode tests."
-      },
-      "steps": [
-        {
-          "name": "build dart",
-          "script": "tools/build.py",
-          "arguments": [
-            "create_sdk",
-            "dartdevc_test",
-            "kernel_platform_files",
-            "runtime_kernel"
-          ]
-        },
-        {
-          "name": "fasta legacy mode sdk tests",
-          "arguments": [
-            "-nfasta-legacy-linux",
-            "--compiler=fasta",
-            "--no-preview-dart-2",
-            "--runtime=none"
-          ]
-        }
-      ]
-    },
-    {
-      "builders": [
         "front-end-linux-release-x64",
         "front-end-mac-release-x64",
         "front-end-win-release-x64"
@@ -468,29 +456,18 @@
         {
           "name": "unit tests",
           "arguments": [
-            "-nunittest-${system}",
-            "--checked",
-            "--compiler=none",
-            "--no-preview-dart-2",
-            "--runtime=vm",
-            "--timeout=240",
-            "pkg/(kernel|front_end|fasta)"
+            "-nunittest-asserts-${system}",
+             "pkg/(kernel|front_end|fasta)"
           ]
         },
         {
           "name": "fasta sdk tests",
-          "arguments": [
-            "-nfasta-${system}",
-            "--compiler=fasta",
-            "--runtime=none"
-          ]
+          "arguments": ["-nfasta-${system}"]
         },
         {
           "name": "fasta co19_2 tests",
           "arguments": [
             "-nfasta-${system}",
-            "--compiler=fasta",
-            "--runtime=none",
             "co19_2"
           ]
         }
@@ -526,7 +503,6 @@
           "name": "vm tests",
           "arguments": [
             "-ndartkb-linux-${mode}-x64",
-            "--compiler=dartkb",
             "vm",
             "language_2"
           ]
@@ -551,9 +527,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nvm-legacy-${system}-product-x64",
-            "--builder-tag=swarming",
-            "--no-preview-dart-2"]
+            "-nvm-legacy-${system}-product-x64"]
         }
       ]
     },
@@ -589,17 +563,12 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nvm-legacy-${system}-${mode}-${arch}",
-            "--builder-tag=swarming",
-            "--no-preview-dart-2"]
+            "-nvm-legacy-${system}-${mode}-${arch}"]
         },
         {
           "name": "checked vm tests",
           "arguments": [
-            "-nvm-legacy-checked-${system}-${mode}-${arch}",
-            "--builder-tag=swarming",
-            "--checked",
-            "--no-preview-dart-2"]
+            "-nvm-legacy-checked-${system}-${mode}-${arch}"]
         }
       ]
     },
@@ -620,16 +589,12 @@
           "name": "vm ia32 tests",
           "arguments": [
             "-nvm-legacy-linux-debug-ia32",
-            "--arch=ia32",
-            "--no-preview-dart-2",
             "vm"]
         },
         {
           "name": "vm x64 tests",
           "arguments": [
             "-nvm-legacy-linux-debug-x64",
-            "--arch=x64",
-            "--no-preview-dart-2",
             "vm"]
         }
       ]
@@ -650,9 +615,7 @@
         {
           "name": "vm legacy tests",
           "arguments": [
-            "-ndartk-legacy-linux-release-x64",
-            "--compiler=dartk",
-            "--no-preview-dart-2"],
+            "-ndartk-legacy-linux-release-x64"],
           "fileset": "vm-kernel",
           "shards": 10
         }
@@ -660,43 +623,16 @@
     },
     {
       "builders": [
+        "vm-kernel-precomp-linux-debug-x64",
+        "vm-kernel-precomp-linux-product-x64",
         "vm-kernel-precomp-linux-release-simarm",
         "vm-kernel-precomp-linux-release-simarm64",
+        "vm-kernel-precomp-linux-release-x64",
         "vm-kernel-precomp-mac-release-simarm64",
         "vm-kernel-precomp-win-release-simarm64",
         "vm-kernel-precomp-win-release-x64"
       ],
       "meta": {
-        "description": "This configuration is used by the vm kernel precomp builders that require --use-blobs."
-      },
-      "steps": [
-        {
-          "name": "build dart",
-          "script": "tools/build.py",
-          "arguments": [
-            "runtime_kernel",
-            "dart_precompiled_runtime"
-          ]
-        },
-        {
-          "name": "vm tests",
-          "arguments": [
-            "-ndartkp-${system}-release-${arch}",
-            "--compiler=dartkp",
-            "--runtime=dart_precompiled",
-            "--use-blobs"
-          ],
-          "fileset": "vm-kernel",
-          "shards": 10
-        }
-      ]
-    },
-    {
-      "builders": [
-        "vm-kernel-precomp-linux-product-x64",
-        "vm-kernel-precomp-linux-release-x64"
-      ],
-      "meta": {
         "description": "This configuration is used by the vm kernel precomp builders."
       },
       "steps": [
@@ -711,38 +647,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartkp-linux-release-x64",
-            "--compiler=dartkp",
-            "--runtime=dart_precompiled"
-          ],
-          "fileset": "vm-kernel",
-          "shards": 10
-        }
-      ]
-    },
-    {
-      "builders": [
-        "vm-kernel-precomp-linux-debug-x64"
-      ],
-      "meta": {
-        "description": "This configuration is used by the vm kernel precomp debug builder."
-      },
-      "steps": [
-        {
-          "name": "build dart",
-          "script": "tools/build.py",
-          "arguments": [
-            "runtime_kernel",
-            "dart_precompiled_runtime"
-          ]
-        },
-        {
-          "name": "vm tests",
-          "arguments": [
-            "-ndartkp-linux-debug-x64",
-            "--compiler=dartkp",
-            "--runtime=dart_precompiled",
-            "--vm-options=--no-enable-malloc-hooks"
+            "-ndartkp-${system}-${mode}-${arch}"
           ],
           "fileset": "vm-kernel",
           "shards": 10
@@ -770,10 +675,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nvm-legacy-asan-linux-release-x64",
-            "--timeout=240",
-            "--no-preview-dart-2",
-            "--builder-tag=asan"],
+            "-nvm-legacy-asan-linux-release-x64"],
           "environment": {
             "ASAN_OPTIONS": "handle_segv=0:detect_stack_use_after_return=0",
             "ASAN_SYMBOLIZER_PATH": "buildtools/linux-x64/clang/bin/llvm-symbolizer"
@@ -782,11 +684,7 @@
         {
           "name": "checked vm tests",
           "arguments": [
-            "-nvm-legacy-checked-asan-linux-release-x64",
-            "--checked",
-            "--no-preview-dart-2",
-            "--timeout=240",
-            "--builder-tag=asan"],
+            "-nvm-legacy-checked-asan-linux-release-x64"],
           "environment": {
             "ASAN_OPTIONS": "handle_segv=0:detect_stack_use_after_return=0",
             "ASAN_SYMBOLIZER_PATH": "buildtools/linux-x64/clang/bin/llvm-symbolizer"
@@ -818,8 +716,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartk-${system}-${mode}-${arch}",
-            "--compiler=dartk"],
+            "-ndartk-${system}-${mode}-${arch}"],
           "fileset": "vm-kernel",
           "shards": 10
         }
@@ -845,9 +742,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-napp_jit-legacy-linux-${mode}-x64",
-            "--compiler=app_jit",
-            "--no-preview-dart-2"]
+            "-napp_jit-legacy-linux-${mode}-x64"]
         }
       ]
     },
@@ -871,8 +766,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-napp_jitk-linux-${mode}-x64",
-            "--compiler=app_jitk"]
+            "-napp_jitk-linux-${mode}-x64"]
         }
       ]
     },
@@ -894,9 +788,6 @@
           "name": "ddc tests",
           "arguments": [
             "-ndartdevc-checked-${system}-release-chrome",
-            "-cdartdevc",
-            "--checked",
-            "--use-sdk",
             "language_2",
             "corelib_2",
             "lib_2"
@@ -906,9 +797,6 @@
           "name": "ddc kernel tests",
           "arguments": [
             "-ndartdevk-checked-${system}-release-chrome",
-            "-cdartdevk",
-            "--checked",
-            "--use-sdk",
             "language_2",
             "corelib_2",
             "lib_2"
@@ -965,9 +853,6 @@
           "name": "ddc tests",
           "arguments": [
             "-ndartdevc-checked-mac-release-chrome",
-            "-cdartdevc",
-            "--checked",
-            "--use-sdk",
             "language_2",
             "corelib_2",
             "lib_2"
@@ -977,9 +862,6 @@
           "name": "ddc kernel tests",
           "arguments": [
             "-ndartdevk-checked-mac-release-chrome",
-            "-cdartdevk",
-            "--checked",
-            "--use-sdk",
             "language_2",
             "corelib_2",
             "lib_2"
@@ -1038,11 +920,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nprecompiler-legacy-${system}-${mode}-${arch}",
-            "--compiler=precompiler",
-            "--no-preview-dart-2",
-            "--runtime=dart_precompiled",
-            "--use-blobs"]
+            "-nprecompiler-legacy-${system}-${mode}-${arch}"]
         }
       ]
     },
@@ -1062,12 +940,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nprecompiler-legacy-android-debug-arm",
-            "--compiler=precompiler",
-            "--no-preview-dart-2",
-            "--runtime=dart_precompiled",
-            "--system=android",
-            "--use-blobs"]
+            "-nprecompiler-legacy-android-debug-arm"]
         }
       ]
     },
@@ -1090,21 +963,12 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nvm-legacy-optcounter-linux-release-${arch}",
-            "--builder-tag=optimization_counter_threshold",
-            "--no-preview-dart-2",
-            "--vm-options=--optimization-counter-threshold=5"
-          ]
+            "-nvm-legacy-optcounter-linux-release-${arch}"]
         },
         {
           "name": "checked vm tests",
           "arguments": [
-            "-nvm-legacy-optcounter-checked-linux-release-${arch}",
-            "--builder-tag=optimization_counter_threshold",
-            "--checked",
-            "--no-preview-dart-2",
-            "--vm-options=--optimization-counter-threshold=5"
-          ]
+            "-nvm-legacy-optcounter-checked-linux-release-${arch}"]
         }
       ]
     },
@@ -1126,11 +990,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartk-optcounter-linux-release-x64",
-            "--builder-tag=optimization_counter_threshold",
-            "--compiler=dartk",
-            "--vm-options=--optimization-counter-threshold=5"
-          ],
+            "-ndartk-optcounter-linux-release-x64"],
           "fileset": "vm-kernel",
           "shards": 10
         }
@@ -1155,17 +1015,12 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nvm-legacy-reload-${system}-${mode}-${arch}",
-            "--hot-reload",
-            "--no-preview-dart-2"]
+            "-nvm-legacy-reload-${system}-${mode}-${arch}"]
         },
         {
           "name": "checked vm tests",
           "arguments": [
-            "-nvm-legacy-reload-checked-${system}-${mode}-${arch}",
-            "--checked",
-            "--hot-reload",
-            "--no-preview-dart-2"]
+            "-nvm-legacy-reload-checked-${system}-${mode}-${arch}"]
         }
       ]
     },
@@ -1188,9 +1043,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartk-reload-${system}-${mode}-${arch}",
-            "--compiler=dartk",
-            "--hot-reload"]
+            "-ndartk-reload-${system}-${mode}-${arch}"]
         }
       ]
     },
@@ -1211,19 +1064,12 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-nvm-legacy-reload-rollback-linux-${mode}-x64",
-            "--hot-reload-rollback",
-            "--no-preview-dart-2"
-          ]
+            "-nvm-legacy-reload-rollback-linux-${mode}-x64"]
         },
         {
           "name": "checked vm tests",
           "arguments": [
-            "-nvm-legacy-reload-rollback-checked-linux-${mode}-x64",
-            "--checked",
-            "--hot-reload-rollback",
-            "--no-preview-dart-2"
-          ]
+            "-nvm-legacy-reload-rollback-checked-linux-${mode}-x64"]
         }
       ]
     },
@@ -1244,10 +1090,7 @@
         {
           "name": "vm tests",
           "arguments": [
-            "-ndartk-reload-rollback-linux-${mode}-x64",
-            "--compiler=dartk",
-            "--hot-reload-rollback"
-          ]
+            "-ndartk-reload-rollback-linux-${mode}-x64"]
         }
       ]
     },
@@ -1267,14 +1110,9 @@
         {
           "name": "dart2js unit tests",
           "arguments": [
-            "-nunittest-linux",
-            "--compiler=none",
-            "--runtime=vm",
-            "--timeout=120",
-            "--checked",
-            "--no-preview-dart-2",
+            "-nunittest-asserts-no-sdk-linux",
             "dart2js",
-            "pkg/compiler"
+            "pkg//compiler/"
           ]
         }
       ]
@@ -1295,11 +1133,7 @@
         {
           "name": "dart2js tests",
           "arguments": [
-            "-ndart2js-hostasserts-linux-ia32-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--host-checked"
-          ],
+            "-ndart2js-hostasserts-linux-ia32-d8"],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 6,
           "fileset": "dart2js_hostasserts"
@@ -1307,31 +1141,19 @@
         {
           "name": "dart2js package tests",
           "arguments": [
-            "-ndart2js-hostasserts-linux-ia32-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--host-checked"
-          ],
+            "-ndart2js-hostasserts-linux-ia32-d8"],
           "tests": ["pkg"]
         },
         {
           "name": "dart2js observatory-ui tests",
           "arguments": [
-            "-ndart2js-hostasserts-linux-ia32-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--host-checked"
-          ],
+            "-ndart2js-hostasserts-linux-ia32-d8"],
           "tests": ["observatory_ui"]
         },
         {
           "name": "dart2js extra tests",
           "arguments": [
-            "-ndart2js-hostasserts-linux-ia32-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--host-checked"
-          ],
+            "-ndart2js-hostasserts-linux-ia32-d8"],
           "tests": ["dart2js_extra","dart2js_native"]
         }
       ]
@@ -1360,10 +1182,7 @@
           "name": "dart2js tests",
           "arguments": [
             "-ndart2js-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 6,
@@ -1373,10 +1192,7 @@
           "name": "dart2js package tests",
           "arguments": [
             "-ndart2js-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["pkg"]
         },
@@ -1384,10 +1200,7 @@
           "name": "dart2js observatory-ui tests",
           "arguments": [
             "-ndart2js-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["observatory_ui"]
         },
@@ -1395,10 +1208,7 @@
           "name": "dart2js extra tests",
           "arguments": [
             "-ndart2js-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["dart2js_extra","dart2js_native"]
         }
@@ -1428,11 +1238,7 @@
           "name": "dart2js fast-startup tests",
           "arguments": [
             "-ndart2js-faststartup-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 6,
@@ -1442,11 +1248,7 @@
           "name": "dart2js fast-startup package tests",
           "arguments": [
             "-ndart2js-faststartup-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["pkg"]
         },
@@ -1454,11 +1256,7 @@
           "name": "dart2js fast-startup observatory-ui tests",
           "arguments": [
             "-ndart2js-faststartup-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["observatory_ui"]
         },
@@ -1466,11 +1264,7 @@
           "name": "dart2js fast-startup extra tests",
           "arguments": [
             "-ndart2js-faststartup-${system}-${runtime}",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["dart2js_extra","dart2js_native"]
         }
@@ -1490,12 +1284,7 @@
         {
           "name": "dart2js tests",
           "arguments": [
-            "-ndart2js-minified-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-linux-d8"],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 6,
           "fileset": "dart2js"
@@ -1503,13 +1292,7 @@
         {
           "name": "dart2js fast-startup tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-faststartup-linux-d8"],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 6,
           "fileset": "dart2js"
@@ -1517,70 +1300,37 @@
         {
           "name": "dart2js package tests",
           "arguments": [
-            "-ndart2js-minified-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-linux-d8"],
           "tests": ["pkg"]
         },
         {
           "name": "dart2js observatory-ui tests",
           "arguments": [
-            "-ndart2js-minified-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-linux-d8"],
           "tests": ["observatory_ui"]
         },
         {
           "name": "dart2js extra tests",
           "arguments": [
-            "-ndart2js-minified-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-linux-d8"],
           "tests": ["dart2js_extra","dart2js_native"]
         },
         {
           "name": "dart2js fast-startup package tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-faststartup-linux-d8"],
           "tests": ["pkg"]
         },
         {
           "name": "dart2js fast-startup observatory-ui tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-faststartup-linux-d8"],
           "tests": ["observatory_ui"]
         },
         {
           "name": "dart2js fast-startup extra tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-linux-d8",
-            "--compiler=dart2js",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-faststartup-linux-d8"],
           "tests": ["dart2js_extra","dart2js_native"]
         }
       ]
@@ -1600,12 +1350,7 @@
           "name": "dart2js tests",
           "arguments": [
             "-ndart2js-minified-csp-linux-chrome",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 4,
@@ -1614,14 +1359,8 @@
         {
           "name": "dart2js fast-startup tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-csp-linux-d8",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "-ndart2js-minified-faststartup-csp-linux-chrome",
+            "--reset-browser-configuration"
           ],
           "exclude_tests": ["observatory_ui", "co19"],
           "shards": 4,
@@ -1631,12 +1370,7 @@
           "name": "dart2js package tests",
           "arguments": [
             "-ndart2js-minified-csp-linux-chrome",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["pkg"]
         },
@@ -1644,67 +1378,37 @@
           "name": "dart2js observatory-ui tests",
           "arguments": [
             "-ndart2js-minified-csp-linux-chrome",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "--reset-browser-configuration"
           ],
           "tests": ["observatory_ui"]
         },
         {
           "name": "dart2js extra tests",
           "arguments": [
-            "-ndart2js-minified-csp-linux-chrome",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
-          ],
+            "-ndart2js-minified-csp-linux-chrome"],
           "tests": ["dart2js_extra","dart2js_native"]
         },
         {
           "name": "dart2js fast-startup package tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-csp-linux-d8",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "-ndart2js-minified-faststartup-csp-linux-chrome",
+            "--reset-browser-configuration"
           ],
           "tests": ["pkg"]
         },
         {
           "name": "dart2js fast-startup observatory-ui tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-csp-linux-d8",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "-ndart2js-minified-faststartup-csp-linux-chrome",
+            "--reset-browser-configuration"
           ],
           "tests": ["observatory_ui"]
         },
         {
           "name": "dart2js fast-startup extra tests",
           "arguments": [
-            "-ndart2js-minified-faststartup-csp-linux-d8",
-            "--compiler=dart2js",
-            "--csp",
-            "--dart2js-batch",
-            "--fast-startup",
-            "--minified",
-            "--reset-browser-configuration",
-            "--use-sdk"
+            "-ndart2js-minified-faststartup-csp-linux-chrome",
+            "--reset-browser-configuration"
           ],
           "tests": ["dart2js_extra","dart2js_native"]
         }
@@ -1775,9 +1479,6 @@
           "name": "analyzer unit tests",
           "arguments": [
             "-nunittest-asserts-${system}",
-            "--compiler=none",
-            "--enable-asserts",
-            "--use-sdk",
             "pkg/analyzer"
           ],
           "shards": 2,
@@ -1787,9 +1488,6 @@
           "name": "analysis_server unit tests",
           "arguments": [
             "-nunittest-asserts-${system}",
-            "--compiler=none",
-            "--enable-asserts",
-            "--use-sdk",
             "pkg/analysis_server"
           ],
           "shards": 2,
@@ -1798,19 +1496,12 @@
         {
           "name": "analyze tests enable-asserts",
           "arguments": [
-            "-nanalyzer-asserts-${system}",
-            "--compiler=dart2analyzer",
-            "--enable-asserts",
-            "--use-sdk"
-          ]
+            "-nanalyzer-asserts-${system}"]
         },
         {
           "name": "analyze pkg tests enable-asserts",
           "arguments": [
             "-nanalyzer-asserts-${system}",
-            "--compiler=dart2analyzer",
-            "--enable-asserts",
-            "--use-sdk",
             "pkg"
           ]
         },
@@ -1818,9 +1509,6 @@
           "name": "analyzer_cli unit tests",
           "arguments": [
             "-nunittest-asserts-${system}",
-            "--compiler=none",
-            "--enable-asserts",
-            "--use-sdk",
             "pkg/analyzer_cli"
           ]
         },
@@ -1828,9 +1516,6 @@
           "name": "analyzer_plugin unit tests",
           "arguments": [
             "-nunittest-asserts-${system}",
-            "--compiler=none",
-            "--enable-asserts",
-            "--use-sdk",
             "pkg/analyzer_plugin"
           ]
         },
@@ -1838,8 +1523,6 @@
           "name": "analyze tests co19_2",
           "arguments": [
             "-nanalyzer-${system}",
-            "--compiler=dart2analyzer",
-            "--use-sdk",
             "co19_2"
           ]
         }
@@ -1848,7 +1531,8 @@
     {
       "builders": [
         "analyzer-use-cfe-linux",
-        "analyzer-use-cfe-mac"
+        "analyzer-use-cfe-mac",
+        "analyzer-use-cfe-win"
       ],
       "meta": {
         "description": "The configuration used by the analyzer builders running --use-cfe."
@@ -1919,6 +1603,15 @@
           ]
         },
         {
+          "name": "run language2 tests",
+          "arguments": [
+            "--compiler=dart2analyzer",
+            "--use-cfe",
+            "--use-sdk",
+            "language_2"
+          ]
+        },
+        {
           "name": "benchmarks analysis-server-cold --use-cfe",
           "script": "out/ReleaseX64/dart-sdk/bin/dart",
           "arguments": [
@@ -1932,71 +1625,6 @@
       ]
     },
     {
-      "builders": [
-        "analyzer-use-cfe-win"
-      ],
-      "meta": {
-        "description": "TODO(devoncarew): Temporarily duplicated from above due to #33540"
-      },
-      "steps": [
-        {
-          "name": "build dart",
-          "script": "tools/build.py",
-          "arguments": ["create_sdk"]
-        },
-        {
-          "name": "analyze pkg/analysis_server --use-cfe",
-          "script": "out/ReleaseX64/dart-sdk/bin/dart",
-          "arguments": [
-            "pkg/analyzer_cli/bin/analyzer.dart",
-            "--fatal-warnings",
-            "--use-cfe",
-            "pkg/analysis_server"
-          ]
-        },
-        {
-          "name": "analyze pkg/analyzer --use-cfe",
-          "script": "out/ReleaseX64/dart-sdk/bin/dart",
-          "arguments": [
-            "pkg/analyzer_cli/bin/analyzer.dart",
-            "--fatal-warnings",
-            "--use-cfe",
-            "pkg/analyzer"
-          ]
-        },
-        {
-          "name": "analyze pkg/analyzer_cli --use-cfe",
-          "script": "out/ReleaseX64/dart-sdk/bin/dart",
-          "arguments": [
-            "pkg/analyzer_cli/bin/analyzer.dart",
-            "--fatal-warnings",
-            "--use-cfe",
-            "pkg/analyzer_cli"
-          ]
-        },
-        {
-          "name": "analyze pkg/front_end --use-cfe",
-          "script": "out/ReleaseX64/dart-sdk/bin/dart",
-          "arguments": [
-            "pkg/analyzer_cli/bin/analyzer.dart",
-            "--fatal-warnings",
-            "--use-cfe",
-            "pkg/front_end"
-          ]
-        },
-        {
-          "name": "analyze pkg/kernel --use-cfe",
-          "script": "out/ReleaseX64/dart-sdk/bin/dart",
-          "arguments": [
-            "pkg/analyzer_cli/bin/analyzer.dart",
-            "--fatal-warnings",
-            "--use-cfe",
-            "pkg/kernel"
-          ]
-        }
-      ]
-    },
-    {
       "builders": ["analyzer-analysis-server-linux"],
       "meta": {
         "description": "Analyze analyzer related packages."
@@ -2049,6 +1677,11 @@
           "arguments": ["--fatal-warnings", "pkg/compiler"]
         },
         {
+          "name": "analyze pkg/dart2js_tools",
+          "script": "out/ReleaseX64/dart-sdk/bin/dartanalyzer",
+          "arguments": ["--fatal-warnings", "pkg/dart2js_tools"]
+        },
+        {
           "name": "analyze pkg/dart_internal",
           "script": "out/ReleaseX64/dart-sdk/bin/dartanalyzer",
           "arguments": ["--fatal-warnings", "pkg/dart_internal"]
@@ -2151,17 +1784,12 @@
         {
           "name": "dartanalyzer --batch tests",
           "arguments": [
-            "-nanalyzer-${system}",
-            "--compiler=dart2analyzer",
-            "--use-sdk"
-          ]
+            "-nanalyzer-${system}"]
         },
         {
           "name": "dartanalyzer --batch pkg tests",
           "arguments": [
             "-nanalyzer-${system}",
-            "--compiler=dart2analyzer",
-            "--use-sdk",
             "pkg"
           ]
         }
@@ -2215,10 +1843,6 @@
           "name": "run analyzer unit tests",
           "arguments": [
             "-nunittest-analyzer_use_fasta-linux",
-            "--builder-tag=analyzer_use_fasta",
-            "--compiler=none",
-            "--use-sdk",
-            "--vm-options=-DuseFastaParser=true",
             "pkg/analyzer"
           ]
         },
@@ -2226,10 +1850,6 @@
           "name": "run analysis server plugin tests",
           "arguments": [
             "-nunittest-analyzer_use_fasta-linux",
-            "--builder-tag=analyzer_use_fasta",
-            "--compiler=none",
-            "--use-sdk",
-            "--vm-options=-DuseFastaParser=true",
             "pkg/analyzer_plugin"
           ]
         },
@@ -2237,10 +1857,6 @@
           "name": "run analysis server unit tests",
           "arguments": [
             "-nunittest-analyzer_use_fasta-linux",
-            "--builder-tag=analyzer_use_fasta",
-            "--compiler=none",
-            "--use-sdk",
-            "--vm-options=-DuseFastaParser=true",
             "pkg/analysis_server"
           ]
         }
@@ -2262,27 +1878,13 @@
         {
           "name": "package unit tests",
           "arguments": [
-            "-nunittest-${system}",
-            "--checked",
-            "--compiler=none",
-            "--no-preview-dart-2",
-            "--runtime=vm",
-            "--timeout=240",
-            "--use-sdk"
-          ],
+            "-nunittest-asserts-${system}"],
           "tests": ["pkg"]
         },
         {
           "name": "third_party/pkg_tested unit tests",
           "arguments": [
-            "-nunittest-${system}",
-            "--checked",
-            "--compiler=none",
-            "--no-preview-dart-2",
-            "--runtime=vm",
-            "--timeout=240",
-            "--use-sdk"
-          ],
+            "-nunittest-asserts-${system}"],
           "tests": ["pkg_tested"]
         },
         {
diff --git a/tools/patch_sdk.dart b/tools/patch_sdk.dart
index b4ca60d..f025a04 100644
--- a/tools/patch_sdk.dart
+++ b/tools/patch_sdk.dart
@@ -14,22 +14,18 @@
 
 import 'package:analyzer/analyzer.dart';
 import 'package:analyzer/src/generated/sdk.dart';
+import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget;
 import 'package:path/path.dart' as path;
-
 import 'package:front_end/src/api_prototype/front_end.dart';
-
 import 'package:front_end/src/base/processed_options.dart';
 import 'package:front_end/src/kernel_generator_impl.dart';
 import 'package:front_end/src/fasta/util/relativize.dart' show relativizeUri;
-
 import 'package:front_end/src/fasta/get_dependencies.dart' show getDependencies;
 import 'package:front_end/src/fasta/kernel/utils.dart'
     show writeComponentToFile;
-
 import 'package:kernel/target/targets.dart';
-import 'package:kernel/target/vm.dart' show VmTarget;
-import 'package:kernel/target/flutter.dart' show FlutterTarget;
-import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget;
+import 'package:vm/target/vm.dart' show VmTarget;
+import 'package:vm/target/flutter.dart' show FlutterTarget;
 
 /// Set of input files that were read by this script to generate patched SDK.
 /// We will dump it out into the depfile for ninja to use.
diff --git a/tools/testing/dart/configuration.dart b/tools/testing/dart/configuration.dart
index 9d5149e..433d1d7 100644
--- a/tools/testing/dart/configuration.dart
+++ b/tools/testing/dart/configuration.dart
@@ -23,7 +23,6 @@
 class TestConfiguration {
   TestConfiguration(
       {this.configuration,
-      this.namedConfiguration,
       this.progress,
       this.selectors,
       this.appendLogs,
@@ -71,12 +70,9 @@
 
   final Map<String, RegExp> selectors;
   final Progress progress;
-  // The test configuration computed from the test options.
+  // The test configuration read from the -n option and the test matrix
+  // or else computed from the test options.
   final Configuration configuration;
-  // The test configuration coming from the -n option.  Merging
-  // these two configurations into one will be the focus of some
-  // usability work.
-  final Configuration namedConfiguration;
 
   // Boolean flags.
 
diff --git a/tools/testing/dart/options.dart b/tools/testing/dart/options.dart
index caa1115..dd3896f 100644
--- a/tools/testing/dart/options.dart
+++ b/tools/testing/dart/options.dart
@@ -631,39 +631,29 @@
           for (var modeName in modes.split(",")) {
             var mode = Mode.find(modeName);
             var system = System.find(data["system"] as String);
-            var namedConfiguration = getNamedConfiguration(
-                data["named_configuration"] as String,
-                runtime,
-                compiler,
-                mode,
-                architecture,
-                system);
-            var innerConfiguration = new Configuration(
-                namedConfiguration?.name ?? "custom configuration",
-                architecture,
-                compiler,
-                mode,
-                runtime,
-                system,
-                timeout: data["timeout"] as int,
-                enableAsserts: data["enable_asserts"] as bool,
-                useBlobs: data["use_blobs"] as bool,
-                useSdk: data["use_sdk"] as bool,
-                useFastStartup: data["fast_startup"] as bool,
-                useDart2JSWithKernel: data["dart2js_with_kernel"] as bool,
-                useDart2JSOldFrontEnd: data["dart2js_old_frontend"] as bool,
-                useHotReload: data["hot_reload"] as bool,
-                useHotReloadRollback: data["hot_reload_rollback"] as bool,
-                isChecked: data["checked"] as bool,
-                isHostChecked: data["host_checked"] as bool,
-                isCsp: data["csp"] as bool,
-                isMinified: data["minified"] as bool,
-                vmOptions: vmOptions,
-                builderTag: data["builder_tag"] as String,
-                previewDart2: !(data["no_preview_dart_2"] as bool));
+            var namedConfiguration =
+                getNamedConfiguration(data["named_configuration"] as String);
+            var innerConfiguration = namedConfiguration ??
+                new Configuration("custom configuration", architecture,
+                    compiler, mode, runtime, system,
+                    timeout: data["timeout"] as int,
+                    enableAsserts: data["enable_asserts"] as bool,
+                    useBlobs: data["use_blobs"] as bool,
+                    useSdk: data["use_sdk"] as bool,
+                    useFastStartup: data["fast_startup"] as bool,
+                    useDart2JSWithKernel: data["dart2js_with_kernel"] as bool,
+                    useDart2JSOldFrontEnd: data["dart2js_old_frontend"] as bool,
+                    useHotReload: data["hot_reload"] as bool,
+                    useHotReloadRollback: data["hot_reload_rollback"] as bool,
+                    isChecked: data["checked"] as bool,
+                    isHostChecked: data["host_checked"] as bool,
+                    isCsp: data["csp"] as bool,
+                    isMinified: data["minified"] as bool,
+                    vmOptions: vmOptions,
+                    builderTag: data["builder_tag"] as String,
+                    previewDart2: !(data["no_preview_dart_2"] as bool));
             var configuration = new TestConfiguration(
                 configuration: innerConfiguration,
-                namedConfiguration: namedConfiguration,
                 progress: Progress.find(data["progress"] as String),
                 selectors: selectors,
                 appendLogs: data["append_logs"] as bool,
@@ -718,6 +708,10 @@
       }
     }
 
+    if (result.length > 1 && data["named_configuration"] != null) {
+      _fail("Named configuration cannot be used with multiple values for "
+          "arch, compiler, mode, or runtime");
+    }
     return result;
   }
 
@@ -761,9 +755,8 @@
         pattern = ".?";
       }
       if (selectorMap.containsKey(suite)) {
-        print("Error: '$suite/$pattern'.  Only one test selection"
+        _fail("Error: '$suite/$pattern'.  Only one test selection"
             " pattern is allowed to start with '$suite/'");
-        exit(1);
       }
       selectorMap[suite] = new RegExp(pattern);
     }
@@ -861,26 +854,8 @@
   }
 }
 
-Configuration getNamedConfiguration(String template, Runtime runtime,
-    Compiler compiler, Mode mode, Architecture architecture, System system) {
+Configuration getNamedConfiguration(String template) {
   if (template == null) return null;
-  if (template.contains(r"${runtime}")) {
-    template = template.replaceFirst(r"${runtime}", runtime.name);
-  }
-  if (template.contains(r"${compiler}")) {
-    template = template.replaceFirst(r"${compiler}", compiler.name);
-  }
-  if (template.contains(r"${mode}")) {
-    template = template.replaceFirst(r"${mode}", mode.name);
-  }
-  if (template.contains(r"${arch}")) {
-    template = template.replaceFirst(r"${arch}", architecture.name);
-  }
-  if (template.contains(r"${system}")) {
-    var name = {'windows': 'win', 'macos': 'mac'}[system.name] ?? system.name;
-    template = template.replaceFirst(r"${system}", name);
-  }
-
   TestMatrix testMatrix = TestMatrix.fromPath("tools/bots/test_matrix.json");
   return testMatrix.configurations
       .singleWhere((c) => c.name == template, orElse: () => null);
diff --git a/tools/testing/dart/test_configurations.dart b/tools/testing/dart/test_configurations.dart
index 7e36576..e21cf48 100644
--- a/tools/testing/dart/test_configurations.dart
+++ b/tools/testing/dart/test_configurations.dart
@@ -85,26 +85,13 @@
 
   // Print the configurations being run by this execution of
   // test.dart. However, don't do it if the silent progress indicator
-  // is used. This is only needed because of the junit tests.
+  // is used.
   if (progressIndicator != Progress.silent) {
-    var outputWords = configurations.length > 1
-        ? ['Test configurations:']
-        : ['Test configuration:'];
-
+    print('Test configuration${configurations.length > 1 ? 's' : ''}:');
     for (var configuration in configurations) {
-      var settings = [
-        configuration.compiler.name,
-        configuration.runtime.name,
-        configuration.mode.name,
-        configuration.architecture.name
-      ];
-      if (configuration.isChecked) settings.add('checked');
-      if (configuration.noPreviewDart2) settings.add('no-preview-dart-2');
-      if (configuration.useFastStartup) settings.add('fast-startup');
-      if (configuration.useEnableAsserts) settings.add('enable-asserts');
-      outputWords.add(settings.join('_'));
+      print("    ${configuration.configuration}");
+      print("Suites tested: ${configuration.selectors.keys.join(", ")}");
     }
-    print(outputWords.join(' '));
   }
 
   var runningBrowserTests =
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index f069fcb..5ea4206 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -18,7 +18,7 @@
 import 'package:front_end/src/api_unstable/bazel_worker.dart' as fe;
 import 'package:kernel/ast.dart' show Component, Library;
 import 'package:kernel/target/targets.dart';
-import 'package:kernel/target/vm.dart';
+import 'package:vm/target/vm.dart';
 
 main(List<String> args) async {
   args = preprocessArgs(args);
